Warum ist mein PHP-regulärer Ausdruck, der Markdown-Links analysiert, defekt?
<code>$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); </code>
Das obige funktioniert, aber wenn versehentlich ein Leerzeichen zwischen [] und () eingefügt wird, bricht alles zusammen und die beiden Verknüpfungen werden zu einer gemischt:
<code>$text = "blah blah [LINK1] (http://example.com) blah [LINK2](http://sub.example.com/) blah blah ?"; </code>
Ich habe das Gefühl, es ist der laxe Stern, der ihn zerbricht, aber ich weiß nicht, wie ich ihn mit sich wiederholenden Links vergleichen soll.