Почему мое регулярное выражение PHP, анализирующее ссылки Markdown, не работает?

$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 ?";

У меня есть ощущение, что это рыхлая звезда ломает ее, но не не знаю, как еще сопоставить повторяющиеся ссылки.

6
задан rlandster 14 May 2012 в 05:06
поделиться