2011-08-08 19 views
0

我想寫代碼,看看網站的網址是否有任何「=」或「?」在urlPHP的正則表達式來查找?或=不工作

我在$網站(例如www.smith.com?page=1)的URL應該被找到,但它不是在下面的代碼

$cleanurl_text = "You appear to have a clean url structure."; 


$regex = '/=/i'; 
if (preg_match($regex, $website)) 
{ 
    $cleanurl_text = "You do not appear to have a clean url structure."; 
} 
$regex = '/?/i'; 
if (preg_match($regex, $website)) 
{ 
    $cleanurl_text = "You do not appear to have a clean url structure."; 
} 
+0

對於這個downvoter,請解釋爲什麼你認爲這應該是一個downvote。 –

回答

1

這更http://php.net/manual/en/function.strstr.php

,則不應使用正則表達式反正如果你仍然想你的正則表達式,你應該做這樣的事情

$regex = '/=|\?/'; 
if (preg_match($regex, $website)) 
{ 
    $cleanurl_text = "You do not appear to have a clean url structure."; 
} 
+2

「如果您只想確定乾草堆內是否出現特定針,請改用速度更快,內存更少的函數strpos()。」 – Qtax

4

如果你只是匹配一個不變的單個字符,正則表達式不是最好的方法。更有效的正則表達式將是/=|\?/,其測試=?。你的表情不起作用的原因是因爲?是需要轉義的角色。你可以學習正則表達式here

+3

'='不需要轉義,也不需要'/ i'。 – Qtax

+0

@Qtax - 你說得對,我不知道我在想什麼。關於'我'的好處是,我下意識地離開了它。 – dlras2

0

您需要使用反斜槓轉義這些字符。

+0

你不需要轉義'='。 –

0

的正則表達式是的模式 - 複雜(ISH)字符串表達式否則使用子字符串搜索來表達會很繁瑣。對於單個字符,你在做什麼,這是更有效的做:

if (strpos($website, '=') !== FALSE) { 
    $cleanurl_text = "You do not appear to have a clean url structure."; 
} 

一個正則表達式具有相對高昂的啓動成本,因爲模式已被編譯,正則表達式狀態引擎初始化等。 ...所有隻是爲了尋找一個字符。比較而言,strpos會是「免費」的。