繁体   English   中英

使用preg_replace将文本字符串替换为另一个字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM