Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
Php 未知修饰符'/';在里面它是什么?_Php_Regex_Warnings_Preg Match - Fatal编程技术网

Php 未知修饰符'/';在里面它是什么?

Php 未知修饰符'/';在里面它是什么?,php,regex,warnings,preg-match,Php,Regex,Warnings,Preg Match,当我写下以下内容时,我得到了这样的警告,它与任何内容都不匹配,但我确信,$row\u search['content']包含$value preg_match_all("/[^\s]*".preg_quote($value)."[^\s]*/iu", $row_search['content'], $final_matched); WARNING:preg_match_all() [function.preg-match-all]: Unknown modifier '/' in C:\xam

当我写下以下内容时,我得到了这样的警告,它与任何内容都不匹配,但我确信,
$row\u search['content']
包含
$value

preg_match_all("/[^\s]*".preg_quote($value)."[^\s]*/iu", $row_search['content'], $final_matched);

WARNING:preg_match_all() [function.preg-match-all]: Unknown modifier '/' in C:\xampp\htdocs\finance\search\search.php on line 82
为什么我会收到这样的警告信息


感谢在使用以下命令时指定
/
作为分隔符:

否则,
$value
的值中的
/
将不会被转义。

您也应该将您的值改为转义分隔符


在您的示例中,如果
$value
包含“(content/other)”,它将被转义为“(content/other)”,并且您的正则表达式中的这个将是
/[^\s]*\(content/other\)[^\s]*/iu
,正如您可以看到的那样,有一个/将使您的正则表达式崩溃。如果您明确地说“/”是分隔符,那么正则表达式将是
/[^\s]*\(content\/other\)[^\s]*/iu

我假设
$value
包含斜杠
/
,它不会通过以下方式转义:

特殊的正则表达式字符是:
\+*?[ ^ ] $ ( ) { } = ! < > | : -

将使用的分隔符传递给函数:

preg_match_all("/[^\s]*".preg_quote($value, '/')."[^\s]*/iu", $row_search['content'], $final_matched);
//                                        ---^

或者使用另一个定界符。

/
不是PCRE元字符,因此,尽管您在正则表达式中使用它作为定界符,
preg_quote()
不会转义它,因为它不知道您正在使用它作为定界符。您必须将其作为第二个参数传入,正如其他人所说的,这样才能将其转义:

preg_match_all("/[^\s]*".preg_quote($value, '/')."[^\s]*/iu", $row_search['content'], $final_matched);

$value
的内容是什么?
preg_match_all("/[^\s]*".preg_quote($value, '/')."[^\s]*/iu", $row_search['content'], $final_matched);