Php preg_用字符串替换$variable
我在这个话题上发现了几个问题,但没有解决方案:Php preg_用字符串替换$variable,php,preg-replace,Php,Preg Replace,我在这个话题上发现了几个问题,但没有解决方案: $name = 'Adam'; $line = 'This is (Adam) Eve!'; $newline = preg_replace('/\(|\)/|\$name/','',$line); 我的输出应该是这是Eve。。。知道我的代码有什么问题吗?谢谢你的帮助 使用strtr函数而不是正则表达式 $name = 'Adam'; $line = 'This is (Adam) Eve!'; $line = strtr($line, arra
$name = 'Adam';
$line = 'This is (Adam) Eve!';
$newline = preg_replace('/\(|\)/|\$name/','',$line);
我的输出应该是
这是Eve
。。。知道我的代码有什么问题吗?谢谢你的帮助 使用strtr函数而不是正则表达式
$name = 'Adam';
$line = 'This is (Adam) Eve!';
$line = strtr($line, array('(' => '',$name=>'', ')' => ''));
在中,变量不展开。此外,由于$
是转义的,因此它作为文本字符进行匹配\$name
匹配$name
子字符串,而不是Adam
。此外,/
之前的|
会破坏整个模式,使其过早结束
也许,你想使用
$name = 'Adam';
$line = 'This is (Adam) Eve!';
$newline = preg_replace("/\(|\)|$name/",'',$line);
echo $newline;
看。要除去Eve
之前的空格,请在模式中的$name
之前添加\s*
,以匹配0+空格字符
另一种选择:
preg_replace("/\s*\($name\)/",'','This is (Adam) Eve!')
看
这里,
-匹配0+空格字符\s*
-a\(
字符(
-变量$name
中的文本$name
-文字\)
字符)
- 首先,您可能想了解
那么您的正则表达式格式错误,也不是您想要的
/\(|\)/|\$name/
您的正则表达式在管道前面和右括号后面有一个斜杠()/|
)语法错误。它是未转义的,也是正则表达式的转义字符。(这意味着它也出现在正则表达式的开始和结束处。)您需要先删除它
您将得到一个类似于/\(|\)\124\$name/
的正则表达式。使用它,函数调用具有以下逻辑:
$name
$name
变量中出现的所有单词,这些单词用括号括起来
这可以通过以下函数调用实现:
$newline = preg_replace("/\($name\)/", '', $line);
如果要使括号成为可选的,请使用问号运算符表示它们不是强制性的:
$newline = preg_replace("/\(?$name\)?/", '', $line);
请使用正确的SE术语。“我在这个问题上发现了几个问题”,例如。试试-
\(Adam\)\s
。看看这个,也许它可以帮助你