[英]Replacing a string of text with another string using preg_replace
我有一个字符串Action-[N] ew,[U] pdate或[D] elete:N ,我需要替换为“ Action-[N] ew,[U] pdate或[D] elete:U”通过使用preg_replace,我无法正常工作。 它保持不变。
我的代码看起来像这样
$action = Action - '[N]ew, [U]pdate, or [D]elete : U';
$line = preg_replace("/(Action - [N]ew, [U]pdate, or [D]elete : N)/",$action,$line);
[
和]
是正则表达式中的特殊字符。 如果要匹配它们,则必须逃脱它们:
"/(Action - \[N\]ew, \[U\]pdate, or \[D\]elete : N)/"
无需转义, [
和]
表达式将匹配其中的每个字符之一。 因此,在您的原始情况下, "[N]ew"
与"New"
匹配。 如果它是"[NP]ew"
,则它将与"New"
或"Pew"
相匹配。
您不需要preg_replace
即可。 一个简单的str_replace
就足够了:
$action = 'Action - [N]ew, [U]pdate, or [D]elete : U';
$line = str_replace('Action - [N]ew, [U]pdate, or [D]elete : N', $action, $line);
几个问题:
1)第一行出现语法错误。 您的报价错误。 它应该是:
$action = "Action - [N]ew, [U]pdate, or [D]elete : N";
2)您需要在正则表达式中转义方括号( [
和]
)。 或者,您可以执行以下操作:
$line = preg_replace("/N$/", "U", $action);
因此,将它们结合起来:
$action = "Action - [N]ew, [U]pdate, or [D]elete : N";
$line = preg_replace("/N$/", "U", $action);
尝试转义'['和']'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.