2013-02-19 49 views
0

请帮助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的广泛范围。

回答

0

您可以尝试“或”条件

<?php 
$referrer = $_SERVER['HTTP_REFERER']; 
    if (preg_match("/apple|orange|grape/",$referrer)) { 
    header("Refresh:0;url=http://mysite.com/fruit/"); 
    exit; 
} 
?> 

请注意,因为没有在字边界限制,它将匹配“海棠”的可能。

+0

感谢您的回复!当你说“单词边界”时,如果你想匹配确切的单词,只需加上\ b,其中的单词边界应该是这样的: (preg_match(“/ apple | orange | grape/i”,$ referrer)) – 2013-02-20 18:57:58

+0

be:preg_match(“/ \ b(apple | orange | grape)\ b/i”,$ referrer) – 2013-02-20 19:07:47