preg_replace $variable 为字符串

vlo*_*yan 4 php preg-replace

我发现了有关此主题的几个问题,但没有适合我目的的解决方案:

$name = 'Adam';
$line = 'This is (Adam) Eve!';
$newline = preg_replace('/\(|\)/|\$name/','',$line);
Run Code Online (Sandbox Code Playgroud)

我的输出应该是This is Eve...知道我的代码有什么问题吗?感谢您的帮助!

Wik*_*żew 5

单引号 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变量内的文本
  • \)- 一个文字)字符。