求高手,看下这段正则哪里错了?? 本帖最后由 dz215136304 于 2012-07-05 08:54:58 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $str = preg_replace('#([a-zA-z]+://)([^\'"]*)#e','endecode::showdescurl("$2")',$str);echo $str;<a target="_blank" href="go.php?id=7499092"><img src="#"> echo preg_replace('/(?<=href=")[^"]+/e',"endecode::showdescurl('$0')",$str); 楼主想 _id=702397429 换为_go.php?id=702397429 id参数不是数字就_# 吗? 我把代码重新贴一下吧,我这测试完全可以运行,只是你的正则,把图片也给替换了,我现在是只想替换网址,其他的图片路径都不管url.phpinclude(endecode.class.php);$str='<a target="_blank" href="http://meal.taobao.com/mealDetail.htm?meal_id=7499092&item_num_id=14204771432&seller_id=702397429">http://www.qq.com</a><img src="http://info-database.csdn.net/Upload/2012-07-02/ibm-db2-190_240-0628.jpg">';$str = preg_replace('#([a-zA-z]+://)([^\'"]*)#e','endecode::showdescurl("$2")',$str);echo $str;endecode.class.phpclass endecode{ static function showdescurl($url){ if(strpos($url,'id') !==false){ preg_match('/id=(\d+)/i',$url,$ar); return 'go.php?id='.$ar[1]; }else{ return '#'; } }} 我把代码重新贴一下吧,我这测试完全可以运行,只是你的正则,把图片也给替换了,我现在是只想替换网址,其他的图片路径都不管url.phpinclude(endecode.class.php);$str='<a target="_blank" href="http://meal.taobao.com/mealDetail.htm?meal_id=7499092&item_num_id=14204771432&seller_id=702397429">http://www.qq.com</a><img src="http://info-database.csdn.net/Upload/2012-07-02/ibm-db2-190_240-0628.jpg">';$str = preg_replace('#([a-zA-z]+://)([^\'"]*)#e','endecode::showdescurl("$2")',$str);echo $str;endecode.class.phpclass endecode{ static function showdescurl($url){ if(strpos($url,'id') !==false){ preg_match('/id=(\d+)/i',$url,$ar); return 'go.php?id='.$ar[1]; }else{ return '#'; } }} $str = preg_replace('#(?<=href...)([a-zA-z]+://)([^\'"]*)#e','endecode::showdescurl("$2")',$str); 你字符串里也没有id=什么的东西啊?不知道你是不是这种意图。[User:root Time:03:58:02 Path:/home/liangdong/php]$ php preg.php <a target="_blank" href="go.php?meal_id=7499092&item_num_id=14204771432&seller_id=702397429"><img src="http://info-database.csdn.net/Upload/2012-07-02/ibm-db2-190_240-0628.jpg">[User:root Time:03:58:03 Path:/home/liangdong/php]$ cat preg.php <?php$str = <<<EOF<a target="_blank" href="http://meal.taobao.com/mealDetail.htm?meal_id=7499092&item_num_id=14204771432&seller_id=702397429"><img src="http://info-database.csdn.net/Upload/2012-07-02/ibm-db2-190_240-0628.jpg">EOF;$str = preg_replace_callback('/(<a.*href=")(.*)"/iUs', 'callback', $str);echo $str;function callback($matches) { $n = preg_match_all('/([^?&]*id)=(\d+)/is', $matches[2], $ret); if ($n != 0) { $query = ""; $index = 0; foreach ($ret[1] as $name) { $query .= $name . "=" . $ret[2][$index] . "&"; ++ $index; } return $matches[1] . "go.php?" . trim($query, "&") . '"'; } else { return $matches[1] . "#" . '"'; }}?> $str = preg_replace('#(?<=href...)([a-zA-z]+://)([^\'"]*)#e','endecode::showdescurl("$2")',$str); discuz 高手来 js乱码问题困惑一上午了..... 求ckeditor_3.4.2插入代码功能 请教高手 PHP 和 DELPHI 开发一个功能 可以实现吗? 全球24位顶尖架构师之作《架构之美》 php 网站添加视频,如何实现这种效果,自己开发,还是找视频插件商买 php生成excel php 进阶学习 搞过ThinkPHP框架和方维团购系统的进来看看! 如何循环采集接口数据信息? memcached分布式缓存系统 php编码规范,求高手们帮忙给些意见
echo $str;
<a target="_blank" href="go.php?id=7499092"><img src="#">
我把代码重新贴一下吧,我这测试完全可以运行,只是你的正则,把图片也给替换了,我现在是只想替换网址,其他的图片路径都不管url.php
include(endecode.class.php);
$str='<a target="_blank" href="http://meal.taobao.com/mealDetail.htm?meal_id=7499092&item_num_id=14204771432&seller_id=702397429">http://www.qq.com</a><img src="http://info-database.csdn.net/Upload/2012-07-02/ibm-db2-190_240-0628.jpg">';$str = preg_replace('#([a-zA-z]+://)([^\'"]*)#e','endecode::showdescurl("$2")',$str);
echo $str;
endecode.class.phpclass endecode{
static function showdescurl($url){
if(strpos($url,'id') !==false){
preg_match('/id=(\d+)/i',$url,$ar);
return 'go.php?id='.$ar[1];
}else{
return '#';
}
}}
我把代码重新贴一下吧,我这测试完全可以运行,只是你的正则,把图片也给替换了,我现在是只想替换网址,其他的图片路径都不管url.php
include(endecode.class.php);
$str='<a target="_blank" href="http://meal.taobao.com/mealDetail.htm?meal_id=7499092&item_num_id=14204771432&seller_id=702397429">http://www.qq.com</a><img src="http://info-database.csdn.net/Upload/2012-07-02/ibm-db2-190_240-0628.jpg">';$str = preg_replace('#([a-zA-z]+://)([^\'"]*)#e','endecode::showdescurl("$2")',$str);
echo $str;
endecode.class.phpclass endecode{
static function showdescurl($url){
if(strpos($url,'id') !==false){
preg_match('/id=(\d+)/i',$url,$ar);
return 'go.php?id='.$ar[1];
}else{
return '#';
}
}}
<a target="_blank" href="go.php?meal_id=7499092&item_num_id=14204771432&seller_id=702397429"><img src="http://info-database.csdn.net/Upload/2012-07-02/ibm-db2-190_240-0628.jpg">[User:root Time:03:58:03 Path:/home/liangdong/php]$ cat preg.php
<?php
$str = <<<EOF
<a target="_blank" href="http://meal.taobao.com/mealDetail.htm?meal_id=7499092&item_num_id=14204771432&seller_id=702397429"><img src="http://info-database.csdn.net/Upload/2012-07-02/ibm-db2-190_240-0628.jpg">
EOF;
$str = preg_replace_callback('/(<a.*href=")(.*)"/iUs', 'callback', $str);
echo $str;
function callback($matches) {
$n = preg_match_all('/([^?&]*id)=(\d+)/is', $matches[2], $ret);
if ($n != 0) {
$query = "";
$index = 0;
foreach ($ret[1] as $name) {
$query .= $name . "=" . $ret[2][$index] . "&";
++ $index;
}
return $matches[1] . "go.php?" . trim($query, "&") . '"';
} else {
return $matches[1] . "#" . '"';
}
}
?>