我有这样的字符串
"this TEST-001 is test TEST-001string TEST-001"
这样的超链接
我试过这个,但它适用于所有匹配字符的超链接。
$re1='(TEST)'; # Word 1
$re2='(-)'; # Any Single Character 1
$re3='(\d+)'; # Integer Number 1
echo preg_replace("/([".$re1.$re2.$re3."])/", "<a href=/$1>$1</a>", $txt);
答案 0 :(得分:0)
您创建了一个包含[
和]
的角色类,应删除这些角色。实际上,你创建了太多的捕获组,它们都是多余的。
您可以使用此简化代码:
$txt = "this TEST-001 is test TEST-001string TEST-001";
$re1='TEST'; # Word 1
$re2='-'; # Any Single Character 1
$re3='\d+'; # Integer Number 1
echo preg_replace("/$re1$re2$re3/", "<a href=/$0>$0</a>", $txt);
请参阅IDEONE demo
请注意,可以使用替换字符串中的$0
反向引用来反向引用整个匹配,因此,不需要使用其他捕获组包装整个模式(与{{1}中的Perl旧版本不同相同的反向引用会导致性能问题)。
答案 1 :(得分:0)
$re1='(TEST)'; # Word 1
$re2='(-)'; # Any Single Character 1
$re3='(\d+)'; # Integer Number 1
echo preg_replace("/(".$re1.$re2.$re3.")/", "<a href=/$1>$1</a>", $txt);