这让我烦恼:
为什么preg_match('/pattern/', $haystack)而不是preg_match('pattern', $haystack)?我所看到的一切只是说明它们是必要的,并且提到你可以使用备用分隔符.
但是,它是一个在字符串之外定义自己的接口的函数.它有一个flags参数.添加字符串内的语法似乎反复无常.
它是继承自pcre的东西吗?作者对于解决这些问题并不感兴趣?PHP的又一个不正确的事实?还是有理由吗?
分隔符是为了与Perl兼容.Perl正则表达式使用分隔符,并依赖结束分隔符来表示修饰符标志的开始,例如i,不区分大小写.
// Match alpha-numeric, case insensitive, multiline
preg_match('/^[a-z0-9]+$/im', $input);
Run Code Online (Sandbox Code Playgroud)
可选的flags参数preg_match()不会像i第二个分隔符那样实现正则表达式标志.它们提供不同的功能,实际上PREG_OFFSET_CAPTURE是那里唯一的标志.这并不是说正则表达式标志不能作为另一个函数参数实现.他们当然可以拥有,但Perl兼容性是这里的目标.
PHP并不是直接从Perl借用来实现正则表达式的唯一语言.JavaScript在某种程度上做了,Ruby甚至=~为正则表达式匹配实现了Perl的运算符.
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |