preg_match():未知修饰符';h';在php中
尝试将单词数组与用户键入的文本匹配时会显示此错误preg_match():未知修饰符';h';在php中,php,Php,尝试将单词数组与用户键入的文本匹配时会显示此错误 foreach($items as $k=>$item){ if($item!='' && preg_match("/".$item."/", $opText)){ if(!in_array($item,$params[$val['name']],true)){ $params[$val['name']][]=$item; }
foreach($items as $k=>$item){
if($item!='' && preg_match("/".$item."/", $opText)){
if(!in_array($item,$params[$val['name']],true)){
$params[$val['name']][]=$item;
}
}
}
如果您有动态输入,那么明智的做法是使用以确保此输入不违反任何正则表达式规则
foreach($items as $k=>$item){
if($item!='' && preg_match("/".preg_quote($item, '/')."/", $opText)){
if(!in_array($item,$params[$val['name']],true)){
$params[$val['name']][]=$item;
}
}
}
如果您有动态输入,那么明智的做法是使用以确保此输入不违反任何正则表达式规则
foreach($items as $k=>$item){
if($item!='' && preg_match("/".preg_quote($item, '/')."/", $opText)){
if(!in_array($item,$params[$val['name']],true)){
$params[$val['name']][]=$item;
}
}
}
你需要:
你需要:
$item
中有一个/
,这意味着它认为正则表达式结束得比它结束得早
/goldfish/herring/
// ^ Not actually a modifier (h) - just an unescaped string
您可以使用此函数将其转换为以下内容:
/goldfish\/herring/
// ^ Escaped
用法:
foreach($items as $k=>$item){
if($item!='' && preg_match("/".preg_quote($item,"/")."/", $opText)){
if(!in_array($item,$params[$val['name']],true)){
$params[$val['name']][]=$item;
}
}
}
提示:
foreach($items as $k=>$item){
if($item!='' && preg_match("/".preg_quote($item,"/")."/", $opText)){
if(!in_array($item,$params[$val['name']],true)){
$params[$val['name']][]=$item;
}
}
}
如果这是一个硬编码正则表达式,您可以通过不必转义常用字符来更改转义字符以使正则表达式更易于阅读:
~goldfish/herring~
// ^ ^
// | \- Using a different modifier
// |
// \- Different from the modifier, so we don't have to escape it
$item
中有一个/
,这意味着它认为正则表达式结束得比它结束得早
/goldfish/herring/
// ^ Not actually a modifier (h) - just an unescaped string
您可以使用此函数将其转换为以下内容:
/goldfish\/herring/
// ^ Escaped
用法:
foreach($items as $k=>$item){
if($item!='' && preg_match("/".preg_quote($item,"/")."/", $opText)){
if(!in_array($item,$params[$val['name']],true)){
$params[$val['name']][]=$item;
}
}
}
提示:
foreach($items as $k=>$item){
if($item!='' && preg_match("/".preg_quote($item,"/")."/", $opText)){
if(!in_array($item,$params[$val['name']],true)){
$params[$val['name']][]=$item;
}
}
}
如果这是一个硬编码正则表达式,您可以通过不必转义常用字符来更改转义字符以使正则表达式更易于阅读:
~goldfish/herring~
// ^ ^
// | \- Using a different modifier
// |
// \- Different from the modifier, so we don't have to escape it
最有可能的是
$item
包含一个/
后跟一个h
。最有可能的是$item
包含一个/
后跟一个h
。