0

我正在尝试替换所有出现的三个字母(大写)后跟 5 个数字(0-9)的组,然后用链接替换它们。到目前为止,我所做的一切似乎都不起作用。这就是我目前所拥有的。

return preg_replace("(MTM|SIR|FDF|TAA)[0-9]{5}", "<a href='$&'>$&</a>", $str);
4

2 回答 2

0

通过将字符包装在一个组中来创建对字符的反向引用。然后用$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}. 这意味着您必须拥有MTMSIR或。FDFTAA

于 2013-06-14T07:36:01.340 回答
0

您不需要在您的案例中使用捕获组,因为您可以使用 $0 来引用整个模式。您必须在模式中添加分隔符:

$str = preg_replace('~(?>MTM|SIR|FDF|TAA)\d{5}~', '<a href="$0">$0</a>', $str);
于 2013-06-14T07:40:47.680 回答