$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);
Các công trình trên nhưng nếu một không gian vô tình chèn vào giữa [] và() phá vỡ tất cả mọi thứ và cả hai liên kết được trộn vào một:Tại sao regex PHP của tôi phân tích cú pháp liên kết Markdown bị hỏng?
$text = "blah blah [LINK1] (http://example.com) blah [LINK2](http://sub.example.com/) blah blah ?";
Tôi có cảm giác nó là ngôi sao LAXY mà phá vỡ nó nhưng không biết cách khác để khớp các liên kết lặp lại.
Đây có phải là một số loại Markdown phân tích cú pháp? Nếu vậy, tại sao bạn không sử dụng một cái đã tồn tại? – Gumbo
Đó là. Tôi chỉ cần chức năng liên kết cơ bản mà không cần id và tiêu đề. – user1070125