我在 php 函数中使用以下正则表达式用正确的 HTML 链接替换 URL:
return preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', '<a href="$1" target="_blank">$1</a>', $s);
但是当 $s 有一个像这样的字符串时
<li>http://www.link.com/something.pdf</li>
函数返回
<li><a href="http://www.link.com/something.pdf</li">http://www.link.com/something.pdf</li></a></li>
有谁知道如何修改正则表达式以获得预期的字符串,即
<li><a href="http://www.link.com/something.pdf">http://www.link.com/something.pdf</a></li> ?
不排除由 '%', '?' 引入的 URL 的替换子字符串 或者 '&' ?