У меня есть такая функция:
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
, и в этом случае он говорит, что он не может найти его в массиве, даже если он существует.
Как это исправить?
Это связано с тем, что слэш в вашем вводе: blah / blah / something
рассматривается как разделитель для регулярного выражения.
Чтобы решить эту проблему, вы можете избежать ввода с помощью preg_quote()
, например
function in_array_r($item , $array){ return preg_match('/"'. preg_quote($item, "/") .'"/i' , json_encode($array)); }