用于从字符串中识别加密 ID 的正则表达式存在问题


Issue with regular expression for identifying encrypted ids from string

我想将某些模式转换为链接,就普通用户ID而言,它可以正常工作。但是现在我也想对加密的ID做同样的事情。

以下是我的代码:(作品)

$text = "hi how are you guys???... @@[Sam Thomas:10181] @@[Jack Daniel:11074] @@[Paul Walker:11043] ";
$pattern = "/@@'[([^:]*):('d*)']/";
$matches = array();
preg_match_all($pattern, $text, $matches);
$output = preg_replace($pattern, "<a href='"http://localhost/$2'" class='"tooltip'">$1</a>", $text);

现在我需要像这样链接文本:

"hi how are you guys???... @@[Sam Thomas:ZGNjAmD9ac3K] @@[Jack Daniel:ZGNjAmD9ac3K] @@[Paul Walker:ZGNjAmD9ac3K] ";

但是这种加密不是通过上面的正则表达式来识别的......

@@'[([^:]*):(.*?)']
             ^^

试试这个。请参阅演示。只需将'd*更改为.*?即可接受任何内容,'w*仅接受数字和字母,或[^']]*[0-9a-zA-Z]

https://regex101.com/r/vD5iH9/52

更改正则表达式以接受数字和字母.
像这样的东西——

@@'[([^:]*):([0-9a-zA-Z]*)']
             ^^^^^^^^^^^ Replaced 'd

演示