熟悉正则表达式的大侠看过来小弟遇到点问题 现在从数据库读取一段字符串,使用正则表达式判断是否含有“http://”字符串 并且处理成标签可点击的 目前小弟纠结的是,如果连续的“http://”挨在一起正则就只能判断为一个连接了,不知道该怎么处理了-―― 水平有限啊。。。 例如“http://dfhakoadghttp://daidgjiadpugidua” 识别成http://dfhakoadg和http://daidgjiadpugidua 分享到: ------解决方案-------------------- //只要保证你的url含有http开头的话,可以不使用正则: $s = 'http://dfhakoadghttp://daidgjiadpugidua'; $a = explode('http://', $s); foreach($a as $r) { if($r) echo "http://$r", ''; } //http://dfhakoadg //http://daidgjiadpugidua ------解决方案-------------------- $str="ahahttp://www.chinindfaasdl.comahahttp://www.chinindfaasdl.com hahahahttp://www.chinindfaasdl.com嗲话地哦862189375829http://www.chinindfaasdl.comhiaohdgioas 862189375829http://www.chinindfaasdl.comhiaohdgioas 撒旦法经理卡数据的分类http://www.chinindfaasdwfdfsdl.com"; $str = preg_replace('/(http:\/\/.*?\.com)/', 'click', $str); var_dump($str); 不知道你要换哪里? 我加了个click------解决方案-------------------- 引用: Quote: 引用: $str="ahahttp://www.chinindfaasdl.comahahttp://www.chinindfaasdl.com hahahahttp://www.chinindfaasdl.com嗲话地哦862189375829http://www.chinindfaasdl.comhiaohdgioas 862189375829http://www.chinindfaasdl.comhiaohdgioas 撒旦法经理卡数据的分类http://www.chinindfaasdwfdfsdl.com"; $str = preg_replace('/(http:\/\/.*?\.com)/', 'click', $str); var_dump($str); 不知道你要换哪里? 我加了个click 感谢回答,不过只能筛选出.com的话不是我想达到的结果。。。 感觉http后面那一堆要筛选出除了“http://”以外的东西 目前应该不能完美的解决你这个问题。 因为http与下一个之间可能还有其它string,而这些又符合url规则,所以程序根本不能判断这string是属于上一个的url,还是两个url之间的间隔------解决方案--------------------$str="ahahttp://www.chinindfaasdl.comahahttp://www.chinindfaasdl.com hahahahttp://www.chinindfaasdl.com嗲话地哦862189375829http://www.chinindfaasdl.comhiaohdgioas 862189375829http://www.chinindfaasdl.comhiaohdgioas 撒旦法经理卡数据的分类http://www.chinindfaasdwfdfsdl.com"; echo preg_replace('#http://[\w\.-]+\.(com------解决方案--------------------net------解决方案--------------------org------解决方案--------------------hk------解决方案--------------------info------解决方案--------------------cc------解决方案--------------------edu)#s', '$0', $str);