php q2a软件www.question2answer.org使用以下preg_replace解析文本中的链接:
function qa_html_convert_urls($html, $newwindow=false) {
return substr(preg_replace('/([^A-Za-z0-9])((http|https|ftp):\/\/([^\s&<>"\'\.])+\.([^\s&<>"\']|&)+)/i', '\1<A HREF="\2" '.($newwindow ? ' target="_blank"' : '').'>\2</A>', ' '.$html.' '), 1, -1);
}
唯一的问题是“看这里http://www.mydomain.com/”这样的文字。会链接https://www.mydomain.com/.
或“查看此处(http://www.mydomain.com/)”会链接http://www.mydomain.com/)
最后一个字符(句号,逗号或括号)成为链接的一部分。并打破正确的链接。
您能为此问题提供解决方案吗? 非常感谢:)
答案 0 :(得分:0)
工作解决方案是:
function qa_html_convert_urls($html, $newwindow=false) {
return substr(preg_replace('/([^A-Za-z0-9])((http|https|ftp):\/\/([^\s&<>\(\)\[\]"\'\.])+\.([^\s&<>\(\)\[\]"\']|&)+)/i', '\1<a href="\2" '.($newwindow ? ' target="_blank"' : '').'>\2</a>', ' '.$html.' '), 1, -1);`
}
感谢gidgreen致谢。