$pattern = "/\[(.*?)\]\((.*?)\)/i";
$replace = "<a href=\"$2\" rel=\"nofollow\">$1</a>";
$text = "blah blah [LINK1](http://example.com) blah [LINK2](http://sub.example.com/) blah blah ?";
echo preg_replace($pattern, $replace, $text);
上述方法有效,但如果在 [] 和 () 之间意外插入空格,则所有内容都会中断,并且两个链接会混合为一个:
$text = "blah blah [LINK1] (http://example.com) blah [LINK2](http://sub.example.com/) blah blah ?";
我有一种感觉是松散的明星打破了它,但不知道如何匹配重复链接。