在语法上最大的变化就是增加了delimiters。
ereg('^hello', $str);
preg_match('/^hello/', $str);
定界符几乎可以是任何不是字母数字,反斜杠或空白字符的东西。最常用的一般是~
,/
和#
。
您还可以使用括号匹配:
preg_match('[^hello]', $str);
preg_match('(^hello)', $str);
preg_match('{^hello}', $str);
// etc
如果在正则表达式中发现您的分隔符,你要逃避它:
ereg('^/hello', $str);
preg_match('/^\/hello/', $str);
您可以轻松地逃避所有的分隔符和保留字符在字符串中使用preg_quote:
$expr = preg_quote('/hello', '/');
preg_match('/^'.$expr.'/', $str);
此外,PCRE支持各种东西的modifiers。其中最常用的是不区分大小写的修饰符i
,则替代eregi:
eregi('^hello', 'HELLO');
preg_match('/^hello/i', 'HELLO');
你可以找到完整的参考PCRE syntax in PHP in the manual,以及POSIX正则表达式和PCRE之间的list of differences帮助转换表达。
然而,在简单的例子,你不会使用正则表达式:
stripos($str, 'hello world') === 0
AGAIN?哦,我的上帝在过去十分钟里也有同样的问题 – dynamic 2011-06-07 18:37:51
@ yes123:是的,就是这一点,我也厌倦了。我想要一个实际解释某些内容的wiki文章,以便我们可以关闭所有这些单独的问题。 – netcoder 2011-06-07 18:38:43
我认为不需要这个,因为你只需要用分隔符来包装旧的。此外,我认为你可以使用此前回答的问题。 – dynamic 2011-06-07 18:39:02