2013-02-19 48 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