2012-03-23 63 views
-1

我从php.net提供参数,以pregmatch

<?php 
// The "i" after the pattern delimiter indicates a case-insensitive search 
if (preg_match("/php/i", "PHP is the web scripting language of choice.")) { 
    echo "A match was found."; 
} else { 
    echo "A match was not found."; 
} 
?> 

进行匹配下面的PHP代码,为​​什么他们用我不明白“/php/i”不是(“php”)。请帮助我。谢谢

回答

3

这就是所谓的"perl regular expression" syntax,它起源于Perl,但通常在很多语言中使用。 /字符分隔正则表达式,最后一个i字符是修改匹配行为 - 在这种情况下,说匹配应该不区分大小写,即匹配“PHP”,“php”,“PhP”等所有字符串

您可以在PHP manual的正则表达式中阅读更多内容。

如果你问他们为什么不使用周围的空间 - 这取决于你想找到什么。我建议使用/\bphp\b/i来匹配整个单词。 \b的意思是“文字边界”。

1

你可以写/ php /i,但是这将表明你想要你的“PHP”字符串被空格包围,这不是一个好主意,事实上这个测试会失败。 /.../表示法是您编写perl样式正则表达式的方式。它只是/<pattern>/<flags>这就是全部

1

preg_*函数(PCRE)的PHP正则表达式使用分隔符,如in the PHP manual所述。基本上,你的表情开始并且带有分隔符,并且在分隔符之后可以放置修饰符。 i修饰符使表达式不区分大小写。其他修饰符描述为here

而如果你正在寻找一个固定的字符串,你应该使用strpos来代替。这是更快。