关于 php:preg_replace – 指定模式

preg_replace - specifying pattern

我有一个 HTML 文本文件,其中包含以下用于替换的标记集:
$$ausposttrackingid$$

我正在尝试使用以下正则表达式替换该文本:

1
2
$trackingId="M6023409823490234";
$text = preg_replace("/\\$\\$ausposttrackingid\\$\\$/",$trackingId,$text);

但是...它根本不会替换文本,只留下 $$ausposttrackingid$$。
我以为我已经正确地避开了 $ 符号,但没有放弃。

谁能告诉我应该如何在 preg_replace 中指定正则表达式以正确获取 $$ausposttrackingid$$?或者,考虑到它在正则表达式中的含义,我应该使用另一个标签标记而不是 $ 吗?

谢谢大家。
皮特


不要使用双引号,因为 PHP 会在你的字符串中查找变量名并替换它们的值。因此,字符串中的 $ausposttrackingid 被变量 $ausposttrackingid 的值替换。如果这不是您的意图,请使用单引号:

1
$text = preg_replace('/\\$\\$ausposttrackingid\\$\\$/',$trackingId,$text);

其实习惯用单引号,除非需要。

一个工作示例:

1
2
3
4
5
6
7
<?php
    $text = 'Something $$ausposttrackingid$$ something else';
    $trackingId = 'M6023409823490234';
    $text = preg_replace('/\\$\\$ausposttrackingid\\$\\$/', $trackingId, $text);
    print_r($text);
    //The output is: Something M6023409823490234 something else
?>

附录

你会想要对一些转义字符使用双引号,例如 "\
"
会给你一个新行,但 '\
'
不会,它只会打印 \
.