php正则的高级应用

php正则的高级应用:

(1)把a标签中的内容加一个新的 span标签。
$str = preg_replace("/()(.*?)(<\/a>)/", '\1\2\3', $str); 
其中用了三个子模式(每个圆括号中内容为一个子模式),第一个是链接开始标签,第二个是链接文本,第三个是 
(2) 获取任意的字符串$string中的所有链接地址($string可以是从一个HTML页面文件直接读取出来的字符串),结果保存在一个数组中返回.该函数自动把电子邮件地址排除在外,而且返回的数组中不会有重复元素. 


function GetAllLink($string) 

    $string = str_replace("\r","",$string); 
    $string = str_replace("\n","",$string); 
     
    $regex[url] = "((http|https|ftp|telnet|news):\/\/)?([a-z0-9_\-\/\.]+\.[][a-z0-9:;&#@=_~%\?\/\.\,\+\-]+)"; 
    $regex[email] = "([a-z0-9_\-]+)@([a-z0-9_\-]+\.[a-z0-9\-\._\-]+)"; 
     
    //去掉标签之间的文字 
    $string = eregi_replace(">[^<>]+<","><", $string); 
     
    //去掉JAVASCRIPT代码 
    $string = eregi_replace("<!--.*//-->","", $string); 
     
    //去掉非<a>的HTML标签 
    $string = eregi_replace("<[^a][^<>]*>","", $string); 
     
    //去掉EMAIL链接 
    $string = eregi_replace("<a([ ]+)href=([\"']*)mailto:($regex[email])([\"']*)[^>]*>","", $string); 
     
    //替换需要的网页链接 
    $string = eregi_replace("<a([ ]+)href=([\"']*)($regex[url])([\"']*)[^>]*>","\\3\t", $string); 
     
    $output[0] = strtok($string, "\t"); 
    while(($temp = strtok("\t"))) 
    { 
        if($temp && !in_array($temp, $output)) 
        $output[++$i] = $temp; 
    } 
     
    return $output; 
}

(3)删除html代码中a标签并保留标签内容的方法
HTML代码如:
<div>欢迎访问脚本之家<a href=http://www.jb51.net>www.jb51.net</a></div>
要求正则删除a标签,同时保留a标签内容,如下:
<div>欢迎访问脚本之家www.jb51.net</div>
二、解决方法:
$str = "<div>欢迎访问脚本之家<a href=http://www.jb51.net>www.jb51.net</a></div>";
$str = htmlspecialchars_decode($str);
$str = preg_replace("/<a[^>]*>(.*?)<\/a>/is", "$1", $str);
echo $str;
运行结果为:
<div>欢迎访问脚本之家www.jb51.net</div>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值