首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

熟习正则表达式的大侠看过来

2013-06-19 
熟悉正则表达式的大侠看过来小弟遇到点问题现在从数据库读取一段字符串,使用正则表达式判断是否含有“http:

熟悉正则表达式的大侠看过来
小弟遇到点问题

现在从数据库读取一段字符串,使用正则表达式判断是否含有“http://”字符串
并且处理成<a>标签可点击的

目前小弟纠结的是,如果连续的“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

[解决办法]
<?php 
$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)/', '<a href="\1">click</a>', $str);
var_dump($str);



不知道你要换哪里? 我加了个click
[解决办法]
引用:
Quote: 引用:

<?php 
$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)/', '<a href="\1">click</a>', $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', '<a href="$0">$0</a>', $str);

热点排行