使用以下代码将消息中的 URL 转换为 HTML 链接:
$message = preg_replace("#(http|https|ftp|ftps)://([.]?[&;%=a-zA-Z0-9_/?-])*#",
"<a href=\"away?to=\\0\" target=\"_blank\">\\0</a>", $message);
$message = preg_replace("#(^| |\n)(www([.]?[&;%=a-zA-Z0-9_/?-])*)#",
"\\1<a href=\"away?to=http://\\2\" target=\"_blank\">\\2</a>", $message);
它适用于几乎所有链接,但以下情况除外:
1) http://example.com/mediathek#/video/1976914/zoom:-World-Wide
这里的问题是链接内的#
和:
,因为没有转换完整的链接。
2) If someone just writes "www" in a message
例子:<a href="http://www">www</a>
所以问题是在上面的代码中是否有任何方法可以解决这两种情况?