Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
preg_match():未知修饰符';h';在php中_Php - Fatal编程技术网

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