hashbang/pherl

为PHP提供类似Perl的功能

v1.0.0 2014-03-21 05:58 UTC

This package is not auto-updated.

Last update: 2024-09-28 15:44:10 UTC


README

此模块旨在为PHP用户提供简单的类似Perl的功能。

它包含了许多方便的函数,这些函数是从Perl编程语言中愉快地摘录的,使得编程对于终极的不可耐烦者来说更容易。

  • QW - 通过简单的字符串进行快速数组初始化
  • KEYVAL - 从数组数组中提取key=>val关系
  • VALUES - 从哈希数组中提取值并返回为索引数组
  • PICK - 从数组中随机选择元素
  • ENCASE - 快速向字符串数组添加前缀/后缀
  • EVALSTR - 以类似PHP展开变量的方式处理字符串
  • RE - PHP的类似Perl的正则表达式语法

安装

安装到CodeIgniter / CakePHP等

下载此GIT仓库并将其复制到您的应用程序目录中。

或者,使用Composer安装。

由于Composer似乎不喜欢加载满是辅助函数的文件,因此您需要将

include('vendor/hashbang/pherl/lib/pherl.php');

在您的加载顺序的早期放置以使用提供的Pherl函数。

qw - 快速数组初始化器

通过提供单个字符串快速初始化数组。数组元素由任何空白字符确定。

// Create an array with three elements (foo, bar and baz)
$array = qw('foo bar baz');

$array = qw('foo    bar    baz');

$array = qw('
	foo
	bar
	baz
');

keyval - 从数组数组创建key/val关系

快速重新排列数组,通过从数组数组中选取键和值排列

$in = array(
	array(
		'name' => 'Earl',
		'age' => 35,
	),
	array(
		'name' => 'John',
		'age' => 24,
	),
);

$a = keyval('name', 'age', $in); // $a is now array('Earl' => 35, 'John' => 24)

将'OFFSET'指定为键时,将使用数组数组中索引的偏移量。

values - 从哈希中提取键并作为索引数组返回

快速重新排列数组,通过从数组数组中选取键和值排列

$in = array(
	array(
		'name' => 'Earl',
		'age' => 35,
	),
	array(
		'name' => 'John',
		'age' => 24,
	),
);

$a = values('name', $in); // $a is now array('Earl', 'John')

values实际上只是一个快捷函数,对应于keyval(null, $value, $array)

pick - 从数组中随机选择元素

从数组中选择一个随机元素。

$item = pick(qw('foo bar baz')); // Chooses either foo, bar or baz

encase - 向字符串数组添加前缀/后缀

encase()函数允许您快速将给定的前缀和后缀包裹在数组中的每个字符串周围。

$tags = encase(qw('a img hr', '<', '>')); // Returns: <a>, <img>, <hr>

元字符串'OFFSET'将被替换为数组正在迭代的键。

evalstr - 扩展PHP风格的字符串

使用局部变量返回字符串的计算结果。

echo evalstr('Hello $name', array('name' => 'Matt')); // Returns Matt

echo evalstr('Hello {$user['name']}', array('user' => $this->GetAUser(123))); // Returns the 'user' objects 'GetAUser' methods 'name' property

re - 类似Perl的正则表达式

Re()函数以类似Perl的方式提供正则表达式功能。

简单匹配

确定字符串'needle'是否存在于$haystack中

if (re('/needle/', $haystack)) {
	// Do something
}

简单提取

从输入字符串中提取匹配项

$haystack = 'foo bar baz quz quuz';
list($word) = re('/(qu.)/', $haystack);
echo $word; // Output: 'quz'

RE也可以通过使用'1'修饰符仅返回第一个捕获元素。以下代码与上面相同,但将强制将唯一匹配项放入字符串而不是数组中

$haystack = 'foo bar baz quz quuz';
$word = re('/(qu.)/1', $haystack);
echo $word; // Output: 'quz'

将多个匹配项提取到数组中

将多个匹配项提取到数组中

$haystack = 'foo bar baz quz quuz';
$words = re('/(ba.)/', $haystack);
print_r($words); // Output: array('bar', 'baz')

这是与简单提取相同的语法。当找到多个元素时,RE将自动将元素作为数组返回。

将多个匹配项提取到变量中

您可以使用PHP的list()函数自动将RE的输出填充到一系列变量中。

$haystack = 'Matt is 28 years old';
list($name, $age) = re('/^(.+?) is ([0-9]+) years old$/', $haystack);

简单替换和替换

替换(也称为替换)也受支持。

$haystack = 'foo bar baz foo bar baz';
$output = re('s/bar/BAR/', $haystack);
echo $output; // Output: 'foo BAR baz foo bar baz'

默认情况下,仅替换第一个匹配元素。如果要替换所有匹配项,请使用'g'修饰符

$haystack = 'foo bar baz foo bar baz';
$output = re('s/bar/BAR/', $haystack);
echo $output; // Output: 'foo BAR baz foo BAR baz'

使用后向引用的替换

将单词'bar'和'baz'替换为'FOUND-r'和'FOUND-z'

$haystack = 'foo bar baz';
$output = re('s/(ba.)/FOUND-\1/', $haystack);
echo $output; // Output: 'foo FOUND-bar FOUND-baz'

\1及其之后的内容将自动设置为捕获的项目。

翻译

尽管并不经常使用,但您可以根据范围替换单个字符

$haystack = 'foo bar baz';
$output = re('tr/a-z/A-Z');
echo $output; // Output: 'FOO BAR BAZ'

Perl到PHP引用

本节包含一些常用的Perl语法和在使用此模块时的PHP等价语法。这是因为有时示例比API说明更有帮助。

待办事项

  • 翻译(tr//)工作不正确
  • 支持用于替换的回调函数