我有来自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
')进行匹配。请帮帮我。感谢
答案 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代替。那更快。