【发布时间】:2013-06-14 15:47:03
【问题描述】:
我正在尝试替换所有出现的三个字母(大写)后跟 5 个数字(0-9)的组,然后用链接替换它们。到目前为止,我所做的一切似乎都不起作用。这就是我目前所拥有的。
return preg_replace("(MTM|SIR|FDF|TAA)[0-9]{5}", "<a href='$&'>$&</a>", $str);
【问题讨论】:
标签: php regex function replace targeting
我正在尝试替换所有出现的三个字母(大写)后跟 5 个数字(0-9)的组,然后用链接替换它们。到目前为止,我所做的一切似乎都不起作用。这就是我目前所拥有的。
return preg_replace("(MTM|SIR|FDF|TAA)[0-9]{5}", "<a href='$&'>$&</a>", $str);
【问题讨论】:
标签: php regex function replace targeting
您不需要在您的案例中使用捕获组,因为您可以使用 $0 来引用整个模式。而且你必须在你的模式中添加分隔符:
$str = preg_replace('~(?>MTM|SIR|FDF|TAA)\d{5}~', '<a href="$0">$0</a>', $str);
【讨论】:
通过将字符包装在一个组中来创建对字符的反向引用。然后用$1引用第一组的内容。
return preg_replace("/((?:MTM|SIR|FDF|TAA)[0-9]{5})/", "<a href='$1'>$1</a>", $str);
另外,您可能需要(MTM|SIR|FDF|TAA) 而不是[MTM|SIR|FDF|TAA]{3}。这意味着您必须拥有MTM、SIR、FDF 或TAA。
【讨论】: