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));
}
我有这样的功能:
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));
}