首页 > 段落中匹配url,并转换成可点击的URL,各位有什么好的方法吗?

段落中匹配url,并转换成可点击的URL,各位有什么好的方法吗?

给定某一段文字,文字中含有URL,如何将URL提取出来,并替换成可点击的文案。

举例:

某文案:

欢迎来到http://www.baidu.com/aaa/bbb,多谢指教!

转换后文案:

欢迎来到<a href='http://www.baidu.com/aaa/bbb'>http://www.baidu.com/aaa/bbb</a>,多谢指教!

大家有什么好的想法吗


正则匹配转换了


 $str='欢迎来到http://www.baidu.com/aaa/bbb,多谢指教!欢迎来到http://www.baidu.com/aaa/bbb,多谢指教!';
        preg_match_all('/http(s)?:\/\/[(a-zA-Z0-9\/\.\-\_\?\&\=)]*/',$str,$match);
        foreach($match[0] as $value){
            $strReplace='<a href=\''.$value.'\'>'.$value."</a>";
            $str=str_replace($strReplace,$value,$str);//文本中存在重复的url 且进行了一次替换的时候把先前的替换回来重新替换一次
            $str=str_replace($value,$strReplace,$str);
        }
        echo $str;
        

这样子应该可以满足你的要求替换成超链


找了个还阔以的正则,哈哈,
本人通过修改这个大神写的正则,来符合我们中文习惯的国情,就是加个URL中不能包括中文,有需要可以借鉴。

 $pattern = '#(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>\x7f-\xff]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>\x7f-\xff]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’])[^\x7f-\xff])#';
 
 
【热门文章】
【热门文章】