本帖最后由 dz215136304 于 2012-07-05 08:54:58 编辑

解决方案 »

  1.   

    $str = preg_replace('#([a-zA-z]+://)([^\'"]*)#e','endecode::showdescurl("$2")',$str);
    echo $str;
    <a target="_blank" href="go.php?id=7499092"><img src="#">
      

  2.   

    echo preg_replace('/(?<=href=")[^"]+/e',"endecode::showdescurl('$0')",$str);
      

  3.   

    楼主想  _id=702397429 换为_go.php?id=702397429  id参数不是数字就_#  吗?
      

  4.   


    我把代码重新贴一下吧,我这测试完全可以运行,只是你的正则,把图片也给替换了,我现在是只想替换网址,其他的图片路径都不管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 '#';     
         }  

    }}
      

  5.   


    我把代码重新贴一下吧,我这测试完全可以运行,只是你的正则,把图片也给替换了,我现在是只想替换网址,其他的图片路径都不管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 '#';     
         }  

    }}
      

  6.   

     $str = preg_replace('#(?<=href...)([a-zA-z]+://)([^\'"]*)#e','endecode::showdescurl("$2")',$str); 
      

  7.   

    你字符串里也没有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] . "#" . '"';
            }
    }
    ?>
      

  8.   

    $str = preg_replace('#(?<=href...)([a-zA-z]+://)([^\'"]*)#e','endecode::showdescurl("$2")',$str);