2016-01-07 23 views
0

我有這樣的函數:的preg_match()失敗,幷包含字符串斜線

function in_array_r($item , $array){ 
     return preg_match('/"'.$item.'"/i' , json_encode($array)); 
} 

,然後我用它喜歡:

if(in_array_r($row['name'], $items_array)){ 
    // something.. 
} 

它的工作原理,除非$row['name']包含有類似blah/blah/something,在哪種情況下它說它不能在數組中找到它,即使它存在。

我該如何解決這個問題?

回答

3

這是因爲您的輸入中的斜槓:blah/blah/something被視爲正則表達式的分隔符。

要解決這個問題,您可以用preg_quote()(例如,

function in_array_r($item , $array){ 
    return preg_match('/"'. preg_quote($item, "/") .'"/i' , json_encode($array)); 
}
+0

有道理!謝謝你今天幫助虛擬:) :) – user1996496

+0

@ user1996496不客氣。如果你打開了錯誤報告:'ini_set(「display_errors」,1); \t error_reporting(E_ALL);'你也會得到一個錯誤 – Rizier123