用正则去掉链接标记并保留特定的链接~
时间:2006-12-27
来源:互联网
属于未成品吧,还�佑锌悸堑�<a href="http://www.poco.cn">我的链接</a> 检查href的链接的保留
本人的正则能力有限,有高手请指点吧~
正在努力中。。。。。。
本人的正则能力有限,有高手请指点吧~
正在努力中。。。。。。
复制内容到剪贴板
//把内容中无用的信息中的连接去掉,特定内容保留
$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;
}
?>
代码:
<?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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28