PHP preg_replace 个包含括号的值
PHP preg_replace values that contain parentheses
在我的 PHP 脚本中,我想使用 preg_replace 替换值,跳过 HTML 标签 <a>
和 [=13= 中的任何值].这些值包含在数组中,因此以下是循环中 运行 的当前代码片段:
$Used[$i] = preg_replace("~<a[^>]*>.*?</a\s*>(*SKIP)(*FAIL)|{$MatchFinal[$i]}~","{$MatchLinkFinal[$i]}", $value);
代码有效,但包含括号 (
或 )
的值除外。
例如,如果 $MatchFinal[$i]
包含值 Fatigue
,则它会将其替换为包含 link 的值 $MatchLinkFinal[$i]
:<a>
。 ..Fatigue
...<a>
。但是,如果 $MatchFinal[$i]
包含值 Hair (Dry)
,则它不会替换它。
为什么不替换包含括号的值?
注意:包含空格 and/or 个撇号的值将被替换。
我尝试转义括号...
$MatchFinal[$i] = str_replace("(", "\(", $MatchFinal[$i]);
和
$MatchFinal[$i] = str_replace(")", "\)", $MatchFinal[$i]);
...但我收到一条错误消息:
Warning: preg_replace(): Compilation failed: missing ) at offset 51
你想要preg_quote()
$MatchFinal[$i] = preg_quote($MatchFinal[$i]);
在我的 PHP 脚本中,我想使用 preg_replace 替换值,跳过 HTML 标签 <a>
和 [=13= 中的任何值].这些值包含在数组中,因此以下是循环中 运行 的当前代码片段:
$Used[$i] = preg_replace("~<a[^>]*>.*?</a\s*>(*SKIP)(*FAIL)|{$MatchFinal[$i]}~","{$MatchLinkFinal[$i]}", $value);
代码有效,但包含括号 (
或 )
的值除外。
例如,如果 $MatchFinal[$i]
包含值 Fatigue
,则它会将其替换为包含 link 的值 $MatchLinkFinal[$i]
:<a>
。 ..Fatigue
...<a>
。但是,如果 $MatchFinal[$i]
包含值 Hair (Dry)
,则它不会替换它。
为什么不替换包含括号的值?
注意:包含空格 and/or 个撇号的值将被替换。
我尝试转义括号...
$MatchFinal[$i] = str_replace("(", "\(", $MatchFinal[$i]);
和
$MatchFinal[$i] = str_replace(")", "\)", $MatchFinal[$i]);
...但我收到一条错误消息:
Warning: preg_replace(): Compilation failed: missing ) at offset 51
你想要preg_quote()
$MatchFinal[$i] = preg_quote($MatchFinal[$i]);