用户可以添加文本。这些文本可以具有链接。
我想添加点击。
问题是,某些链接的工作方式如下:
没有http的链接将不起作用,并将变为:
http://mywebsite.com/www.example.com
有什么解决方法的想法吗?
function toLink($titulo){
$url = '~(?:(https?)://([^\s<]+)|(www\.[^\s<]+?\.[^\s<]+))(?<![\.,:])~i';
$titulo = preg_replace($url, '<a href="$0" target="_blank" title="$0">$0</a>', $titulo);
return $titulo;
}
答案 0 :(得分:1)
改为使用preg_replace_callback
,然后您可以查询匹配项以查看是否需要添加协议。
function toLink($titulo) {
$url = '~(?:(https?)://([^\s<]+)|(www\.[^\s<]+?\.[^\s<]+))(?<![\.,:])~i';
$titulo = preg_replace_callback($url, function($matches) {
$url = $matches[0];
if (!preg_match('/^https?:\/\//', $url)) $url = 'http://'.$matches[0];
'<a href="'.$url.'" target="_blank" title="'.$url.'">'.$url.'</a>';
}, $titulo);
return $titulo;
}