preg_match() 失败,字符串包含斜杠

preg_match() fails with string containing slashes

我有这样的功能:

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('/"'. <b>preg_quote($item, "/")</b> .'"/i' , json_encode($array));
}