Preg_match找到任意字符串的多个匹配
问题描述:
请帮助noob继续学习。我寻找的解决方案,但我发现大部分使用正则表达式,我希望能够完成这一点,而不使用正则表达式。 我有以下的重复像10倍多的水果在我的页面的顶部,所有工作正常:Preg_match找到任意字符串的多个匹配
?>
<?php
$referrer = $_SERVER['HTTP_REFERER'];
if (preg_match("/apple/",$referrer)) {
header("Refresh:0;url=http://mysite.com/fruit/");
exit;
}
?>
?>
<?php
$referrer = $_SERVER['HTTP_REFERER'];
if (preg_match("/orange/",$referrer)) {
header("Refresh:0;url=http://mysite.com/fruit/");
exit;
}
?>
但我想凝结下来到这样的事情,我可以简单地只需添加当/如果需要的话,一个新的'水果'。
if (preg_match("/apple/", $referrer) || preg_match("/orange/", $referrer) || preg_match("/peach/", $referrer) || preg_match("and on!! --)) { ...
是的我意识到我有preg_match的广泛范围。
答
您可以尝试“或”条件
<?php
$referrer = $_SERVER['HTTP_REFERER'];
if (preg_match("/apple|orange|grape/",$referrer)) {
header("Refresh:0;url=http://mysite.com/fruit/");
exit;
}
?>
请注意,因为没有在字边界限制,它将匹配“海棠”的可能。
感谢您的回复!当你说“单词边界”时,如果你想匹配确切的单词,只需加上\ b,其中的单词边界应该是这样的: (preg_match(“/ apple | orange | grape/i”,$ referrer)) – 2013-02-20 18:57:58
be:preg_match(“/ \ b(apple | orange | grape)\ b/i”,$ referrer) – 2013-02-20 19:07:47