2012-11-27 43 views
0

我一直在試圖將我的一個變量與另一個變量相匹配。所有我想要的變量讓我們說$word包含它與其他變量相匹配,讓說$search_in和回聲結果相應。Preg_match無論如何

我一直在使用if (preg_match("/$word/i", $search_in)) echo "matches";,但是我收到很多類似以下的警告,因爲我對從數據庫返回的值應用了正則表達式。

警告:的preg_match()[function.preg匹配]:未知的修飾 '('

警告:的preg_match()[function.preg匹配]:未知的修飾 'T'

+0

您不能只在$ word中插入正則表達式,因爲如果$ word包含特殊字符,它將被視爲正則表達式的一部分,這些特殊字符在那裏有特殊含義。他們需要逃脫。你應該確保這些http://us3.php.net/manual/en/regexp.reference.meta.php作爲一個開始逃脫。 –

回答

2

$word最有可能包含斜線。

你應該使用stripos對於這一點,因爲你不需要正則表達式的所有力量:

if (stripos($search_in, $word) !== false) echo 'matches'; 

爲了記錄在案,這樣做的preg_match方式將是:

if (preg_match('/'.preg_quote($word, '/').'/i', $search_in)) echo 'matches'; 

當前者可以完成這項工作時,始終將字符串函數用於正則表達式。

+0

感謝這兩種方法... –

3

如果你只是需要檢查$word是否存在$search_in,你可以使用:

if(stripos($search_in, $word) !== FALSE) echo "matches"; 

正如PHP manual說:

如果您只想檢查一個字符串是否包含在另一個字符串中,請勿使用preg_match()。使用strpos()或strstr()來代替,因爲它們會更快。

+0

或'stripos'因爲正則表達式搜索不區分大小寫。 –

+0

'strpos'(或'stripos')*從不*返回'true'。 – netcoder

+0

我想要一個像「iphone」=「iphone5」的比賽,意味着如果有iphone,所以回聲「匹配」 –