Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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 - Fatal编程技术网

Php 正则表达式:如何考虑双引号

Php 正则表达式:如何考虑双引号,php,regex,Php,Regex,我在PHP中有以下正则表达式: '/\|*([\w\s]*' . $searchTerm . '[\w\s]*)\|*/iu' 让我们假设以下搜索条件: 故事 如何实现正则表达式与具有双引号的字符串匹配,例如: 关于“梦幻岛”的故事 我当前的正则表达式只在双引号开始之前匹配。考虑到双引号,如何用正则表达式覆盖整个字符串?使用 '/\|*([\w\s\'"]*' . preg_quote($searchTerm, "/") . '[\w\s\'"]*)\|*/iu' 只需将双引号和转义单引号添

我在PHP中有以下正则表达式:

'/\|*([\w\s]*' . $searchTerm . '[\w\s]*)\|*/iu'
让我们假设以下搜索条件:

故事

如何实现正则表达式与具有双引号的字符串匹配,例如:

关于“梦幻岛”的故事

我当前的正则表达式只在双引号开始之前匹配。考虑到双引号,如何用正则表达式覆盖整个字符串?

使用

'/\|*([\w\s\'"]*' . preg_quote($searchTerm, "/") . '[\w\s\'"]*)\|*/iu'

只需将双引号和转义单引号添加到字符类
[…]
,,不要忘记用转义
$searchTerm
内容,因为它们可能包含在正则表达式模式中具有特殊含义的字符,如
+
。中的第二个参数也将转义为
/
符号,因为它在代码中用作正则表达式分隔符。

尝试将其添加到正则表达式:
'/\\\\\\\\*([\w\s']*。$searchTerm.[\w\s']*)\\\\\\\*/iu'
如果输入是任意的,也不要忘记使用
preg\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。我的最后一个正则表达式是:'/\\\*([\w\s']*.$searchTerm.[\w\s']*)\\\*/iu',在's'后面加上双引号和单引号。我怎样才能避开单引号使我的php工作?正如@HamZa所说,你需要使用
preg_quote($searchTerm)
而不是
$searchTerm
很高兴它能为你工作。如果我的回答对你有帮助,请考虑一下投票。