扫码关注官方订阅号
给定某一段文字,文字中含有URL,如何将URL提取出来,并替换成可点击的文案。
举例:
某文案:
欢迎来到http://www.baidu.com/aaa/bbb,多谢指教!
转换后文案:
大家有什么好的想法吗
学习是最好的投资!
$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])#';
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
这样子应该可以满足你的要求替换成超链
正则匹配转换了
找了个还阔以的正则,哈哈,
本人通过修改这个大神写的正则,来符合我们中文习惯的国情,就是加个URL中不能包括中文,有需要可以借鉴。