向preg_match提供参数

时间:2012-03-23 07:03:30

标签: php preg-match

我有来自php.net的以下php代码

<?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/i'而不是('php')进行匹配。请帮帮我。感谢

3 个答案:

答案 0 :(得分:3)

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

您可以在PHP manual中了解有关正则表达式的更多信息。

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

答案 1 :(得分:1)

您可以编写/ php /i,但这表示您希望您的“PHP”字符串被空格包围,这不是一个好主意,实际上将无法通过此测试。 /.../表示法是您编写perl样式正则表达式的方式。这只是/<pattern>/<flags>所有

答案 2 :(得分:1)

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

如果您正在寻找固定字符串,则应使用strpos代替。那更快。