+ -
当前位置:首页 → 问答吧 → 用正则去掉链接标记并保留特定的链接~

用正则去掉链接标记并保留特定的链接~

时间:2006-12-27

来源:互联网

属于未成品吧,还�佑锌悸堑�<a href="http://www.poco.cn">我的链接</a> 检查href的链接的保留

本人的正则能力有限,有高手请指点吧~

正在努力中。。。。。。
复制内容到剪贴板
代码:
<?php
//把内容中无用的信息中的连接去掉,特定内容保留
$str = "<a href='#'>http://my.poco.cn/?id=20448032</a> <a href='#'>http://mydfadsf.poco.cn</a>";
$pm_rule_arr = array(
     
     "#<href>http://my.poco.cn/\?id=(\d+)<href>#U",
     //匹配<href>http://my.poco.cn/?id=(\d表示匹配数字)<href> 有“?”一定要加上“\”,不如报错
     "#<href>http://(\w+).poco.cn/?<href>#U"
     //匹配所有的二级域名
     );
//正则的条件数组
   $replace_arr = array(
         "http://lee.poco.cn",
         "lee.poco.cn",
         );
   //单纯的替换字符串
   echo del_photo_bbs_link($str,$pm_rule_arr,$replace_arr);

/**
* 除了特定的链接外,其余的链接都删除超链接标记
* @param  string $txt 内容
* @param  array $pm_rule_arr 正则数组
* @param  array $replace_arr 替换字符串数组
* @return  string  $new_txt
*/
function del_photo_bbs_link($txt,$pm_rule_arr="",$replace_arr=""){

$new_txt = preg_replace('|<a\s.*?>(.*?)</a>|i', '<href>\1<href>', $txt);
//去掉所有的链接标记
/* 检验数组有效性,并决定执行下一步 */
$is_array_pm = is_array($pm_rule_arr);
$is_array_replace = is_array($replace_arr);

if($is_array_pm || $is_array_replace){
//其中一个数组是存在的才执行
  if($is_array_replace){
   foreach ($replace_arr as $replace_val){
    //替换特定的字符串
    $new_txt = str_replace($replace_val,"<a href='".$replace_val."' target='_blank'>".$replace_val."</a>", $new_txt);
   }
  }
  if($is_array_pm){
   foreach ($pm_rule_arr as $rule_val){
   //条件循环
    preg_match_all( $rule_val, $new_txt, $pm_arr );
    //取值
    if(!empty($pm_arr[0])){
    //不为空间循环
     $pm_num = sizeof($pm_arr[0]);
     $pm_val= $pm_arr[0];
     //生成一个新数组
     for ($i=0;$i<=$pm_num;$i++){
     //循环数组并为特定的连接加上链接
      $sr_pm_val = str_replace("<href>","",$pm_val[$i]);
      //去掉<href> 的标记位
      $new_txt = str_replace($sr_pm_val,"<a href='".$sr_pm_val."' target='_blank'>".$sr_pm_val."</a>", $new_txt);
     }
    }
   }
  }
}
return $new_txt;
   
}
?>

作者: sufing0x1   发布时间: 2006-12-27

正在学习正则!

作者: Nickboy   发布时间: 2006-12-27

这个在分页上很好用

作者: leehui1983   发布时间: 2006-12-27

分页?怎个分法?呵呵~

作者: sufing0x1   发布时间: 2006-12-27

我的毕业设计做分页的时候做了个通用函数,只要涉及分页的地方就调用就可以了,很方便,其中一个重要的环节就是正则替换URL,如test.php?page=2,但是如果要实现 test.php?id=1&page=2这样的效果就要用正则处理下URL了,改天做个原创发出来,这样大家可能不好理解我说了什么

作者: leehui1983   发布时间: 2006-12-27