preg_replace - 指定模式

时间:2012-06-17 05:34:38

标签: php escaping preg-replace

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

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

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

但是......它根本不会替换文本,只留下$$ ausposttrackingid $$。 我以为我已经正确地逃过了$符号,但没有给予。

有人能告诉我如何在preg_replace中指定正则表达式来正确选取$$ ausposttrackingid $$吗?或者,或者,我应该使用另一个标记标记而不是$在regex中给出它的含义吗?

谢谢你们。 皮特

1 个答案:

答案 0 :(得分:2)

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

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

事实上,除非需要,否则习惯使用单引号。

一个工作示例:

<?php
    $text = 'Something $$ausposttrackingid$$ something else';
    $trackingId = 'M6023409823490234';
    $text = preg_replace('/\$\$ausposttrackingid\$\$/', $trackingId, $text);
    print_r($text);
    //The output is: Something M6023409823490234 something else
?>

附录

您可能希望对某些scape字符使用双引号,例如"\n"会为您提供一个新行,但'\n'不会,而只会打印\n