阿里巴巴周五发布公告称,美国亿万富<a href="http://www.showguide.cn/en/signup.asp">索罗斯</a>于2009 年第三季度买进该公司<a href="http://www.163.com">股票</a>,目前成为公司三大流通股股东之一。如何去掉“股票”的链接,保留“索罗斯”的链接?

解决方案 »

  1.   

    阿里巴巴周五发布公告称,美国亿万富<a href="http://www.showguide.cn/en/signup.asp">索罗斯</a>于2009 年第三季度买进该公司,目前成为公司三大流通股股东之一。
      

  2.   

    你没说清楚,怎么样才算死链,,,,可以考虑正则的断言当然也可以进行更复杂的php函数替换,参考代码如下$str = '阿里巴巴周五发布公告称,美国亿万富<a href="http://www.showguide.cn/en/signup.asp">索罗斯</a>于2009 年第三季度买进该公司<a href="http://www.163.com">股票</a>,目前成为公司三大流通股股东之一。';echo preg_replace_callback('#<a\s*href\s*=\s*["\']?([^"\'\s]*)["\']?\s*>(.*?)<\s*/a\s*>#i', 'replaceUrl', $str);
    function replaceUrl($m)//这个函数里,可以进行比较复杂的替换规则,比如替换一部分url,取消部分超链接等……
    {
    if(strpos($m[1], 'showguide') !== false)
    {
    return $m[0];
    }
    return $m[2];
    }
      

  3.   

    $str    = '<a href="http://www.showguide.cn/en/signup.asp">阿里巴巴</a>周五发布公告称,美国亿万富<a href="http://www.showguide.cn/en/signup.asp">索罗斯</a>于2009 年第三季度买进该公司<a href="http://www.163.com">股票</a>,目前成为公司三大流通股股东之一。';echo    preg_replace_callback('#<a\s*href\s*=\s*["\']?([^"\'\s]*)["\']?\s*>(.*?)<\s*/a\s*>#i', 'replaceUrl', $str);
    function replaceUrl($m)//这个函数里,可以进行比较复杂的替换规则,比如替换一部分url,取消部分超链接等……
    {
        if(fopen($m[1], 'r') !== false)
        {
            return $m[0];
        }
        return    $m[2];
    }有报错?怎么解决呢?
      

  4.   


    $str = preg_replace ('/<a href=[^>]*>股票<\/a>/is', '股票', $str);
    echo $str;
      

  5.   

    你总要搞清楚fopen干什么的看不出你的目的
      

  6.   

    因为我不清楚文章的链接哪个才是死链接,我就先用fopen判断一下  然后再去掉死链接
      

  7.   

    fopen只是提示你不能打开,一个warning吧,这个你可以关闭警告链接或者用别的比如fsockopen判断超链接返回的头部是否404判断链接有效性
      

  8.   

    preg_match
    preg_replace()正则替换