Heim > Artikel > Backend-Entwicklung > 熟悉正则表达式的大侠看过来
小弟遇到点问题
现在从数据库读取一段字符串,使用正则表达式判断是否含有“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", '<br/>';}//http://dfhakoadg//http://daidgjiadpugidua
//只要保证你的url含有http开头的话,可以不使用正则:$s = 'http://dfhakoadghttp://daidgjiadpugidua';$a = explode('http://', $s);foreach($a as $r) { if($r) echo "http://$r", '<br/>';}//http://dfhakoadg//http://daidgjiadpugidua
//只要保证你的url含有http开头的话,可以不使用正则:$s = 'http://dfhakoadghttp://daidgjiadpugidua';$a = explode('http://', $s);foreach($a as $r) { if($r) echo "http://$r", '<br/>';}//http://dfhakoadg//http://daidgjiadpugidua
<?php$str = "http://dfhakoadghttp://daidgjiadpugidua";$reg = '#http://(?:\w(?!http://))+(?:\w(?=http://))?#'; // 其中\w的规则可以改成定义的规则$matches = array();preg_match_all($reg, $str, $mathces);print_r($mathces);
//只要保证你的url含有http开头的话,可以不使用正则:$s = 'http://dfhakoadghttp://daidgjiadpugidua';$a = explode('http://', $s);foreach($a as $r) { if($r) echo "http://$r", '<br/>';}//http://dfhakoadg//http://daidgjiadpugidua
<?php$str = "http://dfhakoadghttp://daidgjiadpugidua";$reg = '#http://(?:\w(?!http://))+(?:\w(?=http://))?#'; // 其中\w的规则可以改成定义的规则$matches = array();preg_match_all($reg, $str, $mathces);print_r($mathces);
你这种用贪婪匹配应该可以
这里只考虑.com
$reg = '/(http:\/\/.*\.com)/isU';
<?php $str="ahahttp://www.chinindfaasdl.comahahttp://www.chinindfaasdl.comhahahahttp://www.chinindfaasdl.com嗲话地哦862189375829http://www.chinindfaasdl.comhiaohdgioas862189375829http://www.chinindfaasdl.comhiaohdgioas撒旦法经理卡数据的分类http://www.chinindfaasdwfdfsdl.com";$str = preg_replace('/(http:\/\/.*?\.com)/', '<a href="\1">click</a>', $str);var_dump($str);
<?php $str="ahahttp://www.chinindfaasdl.comahahttp://www.chinindfaasdl.comhahahahttp://www.chinindfaasdl.com嗲话地哦862189375829http://www.chinindfaasdl.comhiaohdgioas862189375829http://www.chinindfaasdl.comhiaohdgioas撒旦法经理卡数据的分类http://www.chinindfaasdwfdfsdl.com";$str = preg_replace('/(http:\/\/.*?\.com)/', '<a href="\1">click</a>', $str);var_dump($str);
<?php $str="ahahttp://www.chinindfaasdl.comahahttp://www.chinindfaasdl.comhahahahttp://www.chinindfaasdl.com嗲话地哦862189375829http://www.chinindfaasdl.comhiaohdgioas862189375829http://www.chinindfaasdl.comhiaohdgioas撒旦法经理卡数据的分类http://www.chinindfaasdwfdfsdl.com";$str = preg_replace('/(http:\/\/.*?\.com)/', '<a href="\1">click</a>', $str);var_dump($str);
<?php $str="ahahttp://www.chinindfaasdl.comahahttp://www.chinindfaasdl.comhahahahttp://www.chinindfaasdl.com嗲话地哦862189375829http://www.chinindfaasdl.comhiaohdgioas862189375829http://www.chinindfaasdl.comhiaohdgioas撒旦法经理卡数据的分类http://www.chinindfaasdwfdfsdl.com";$str = preg_replace('/(http:\/\/.*?\.com)/', '<a href="\1">click</a>', $str);var_dump($str);
$str="ahahttp://www.chinindfaasdl.comahahttp://www.chinindfaasdl.comhahahahttp://www.chinindfaasdl.com嗲话地哦862189375829http://www.chinindfaasdl.comhiaohdgioas862189375829http://www.chinindfaasdl.comhiaohdgioas撒旦法经理卡数据的分类http://www.chinindfaasdwfdfsdl.com";echo preg_replace('#http://[\w\.-]+\.(com|net|org|hk|info|cc|edu)#s', '<a href="$0">$0</a>', $str);