我发现了有关此主题的几个问题,但没有适合我目的的解决方案:
$name = 'Adam';
$line = 'This is (Adam) Eve!';
$newline = preg_replace('/\(|\)/|\$name/','',$line);
Run Code Online (Sandbox Code Playgroud)
我的输出应该是This is Eve...知道我的代码有什么问题吗?感谢您的帮助!
在单引号 PHP 字符串文字中,变量不会扩展。此外,由于 the$被转义,因此它被匹配为文字字符。\$name匹配子$name字符串,而不是Adam. 此外,/之前|破坏了整个模式,过早地结束了它。
也许,您想使用
$name = 'Adam';
$line = 'This is (Adam) Eve!';
$newline = preg_replace("/\(|\)|$name/",'',$line);
echo $newline;
Run Code Online (Sandbox Code Playgroud)
请参阅PHP 演示。要消除 before 的空格Eve,请在模式中添加\s*before以匹配 0+ 空白字符。$name
另一种选择:
preg_replace("/\s*\($name\)/",'','This is (Adam) Eve!')
Run Code Online (Sandbox Code Playgroud)
请参阅另一个 PHP 演示。
这里,
\s*- 匹配 0+ 空白字符\(- 一个(字符$name-$name变量内的文本\)- 一个文字)字符。