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

时间:2009-07-31 15:19:41

标签: php regex preg-replace

我有一个字符串动作 - [N] ew,[U] pdate或[D] elete:N 我需要替换为“动作 - [N] ew,[U] pdate,或[D] elete:U“使用preg_replace进行somhow我无法使其工作。它保持不变。

我的代码看起来像这样

$action = Action - '[N]ew, [U]pdate, or [D]elete : U';
$line = preg_replace("/(Action - [N]ew, [U]pdate, or [D]elete : N)/",$action,$line);

4 个答案:

答案 0 :(得分:3)

[]是正则表达式中的特殊字符。如果你想匹配它们,你将不得不逃避它们:

"/(Action - \[N\]ew, \[U\]pdate, or \[D\]elete : N)/"

如果没有转义,[]中的表达式将与其中的每个字符匹配。因此,在原始案例中,"[N]ew""New"匹配。如果是"[NP]ew",则会匹配"New""Pew"

答案 1 :(得分:2)

您不需要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);

答案 2 :(得分:2)

夫妻问题:

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);

答案 3 :(得分:0)

尝试转义'['和']'