Php 正则表达式:如何考虑双引号
我在PHP中有以下正则表达式:Php 正则表达式:如何考虑双引号,php,regex,Php,Regex,我在PHP中有以下正则表达式: '/\|*([\w\s]*' . $searchTerm . '[\w\s]*)\|*/iu' 让我们假设以下搜索条件: 故事 如何实现正则表达式与具有双引号的字符串匹配,例如: 关于“梦幻岛”的故事 我当前的正则表达式只在双引号开始之前匹配。考虑到双引号,如何用正则表达式覆盖整个字符串?使用 '/\|*([\w\s\'"]*' . preg_quote($searchTerm, "/") . '[\w\s\'"]*)\|*/iu' 只需将双引号和转义单引号添
'/\|*([\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
很高兴它能为你工作。如果我的回答对你有帮助,请考虑一下投票。