<A href="http://fx.taoo.com/u/MjgxODkzNjY2/view/ta_taoshare_list.htm?redirect=fa" target="_blank">饭勺 </A><A href="http://rate.taoo.com/user-rate-8907ad41fbab5b9bbe534d881bba661e.htm" target="_blank"><IMG title="请点击查看详情" src="http://pics.cdn.com/newrank/b_red_4.gif" align="absMiddle" border="0"></A>
<A href="http://fx.taoo.com/u/MjgxODkzNjY2/view/ta_taoshare_list.htm?redirect=fa" target="_blank">的勺 </A><A href="http://rate.taoo.com/user-rate-8907ad41fbab5b9bbe534d881bba661e.htm" target="_blank"><IMG title="请点击查看详情" src="http://pics.cdn.com/newrank/b_r0.gif" align="absMiddle" border="0"></A>
第一,请问怎么取其中的文本内容“饭勺”和“的勺”
第二,请问怎么把"饭勺"和"的勺"的链接替换成<a href="http://www.a.com/a.php?g=饭勺" target="_blank">饭勺</a>这样的形式。
麻烦高手们帮帮忙,这个用php结合正则表达式,程序中的正则表达式该怎么写?

解决方案 »

  1.   


    $str = <<<eof
    <A href="http://fx.taoo.com/u/MjgxODkzNjY2/view/ta_taoshare_list.htm?redirect=fa" target="_blank">饭勺 </A><A href="http://rate.taoo.com/user-rate-8907ad41fbab5b9bbe534d881bba661e.htm" target="_blank"><IMG title="请点击查看详情" src="http://pics.cdn.com/newrank/b_red_4.gif" align="absMiddle" border="0"></A>
    <A href="http://fx.taoo.com/u/MjgxODkzNjY2/view/ta_taoshare_list.htm?redirect=fa" target="_blank">的勺 </A><A href="http://rate.taoo.com/user-rate-8907ad41fbab5b9bbe534d881bba661e.htm" target="_blank"><IMG title="请点击查看详情" src="http://pics.cdn.com/newrank/b_r0.gif" align="absMiddle" border="0"></A>
    eof;
    echo '<pre>';
    if(preg_match_all('/<a\s+href="(.*?)"\s+target="_blank">(?!<img[^>]*>)(.*?)<\/a>/i',$str,$arr)){
      print_r($arr);
    }输出:
    Array
    (
        [0] => Array
            (
                [0] => 饭勺 
                [1] => 的勺 
            )    [1] => Array
            (
                [0] => http://fx.taoo.com/u/MjgxODkzNjY2/view/ta_taoshare_list.htm?redirect=fa
                [1] => http://fx.taoo.com/u/MjgxODkzNjY2/view/ta_taoshare_list.htm?redirect=fa
            )    [2] => Array
            (
                [0] => 饭勺 
                [1] => 的勺 
            ))
      

  2.   


    $str = <<<eof
    <A href="http://fx.taoo.com/u/MjgxODkzNjY2/view/ta_taoshare_list.htm?redirect=fa" target="_blank">饭勺 </A><A href="http://rate.taoo.com/user-rate-8907ad41fbab5b9bbe534d881bba661e.htm" target="_blank"><IMG title="请点击查看详情" src="http://pics.cdn.com/newrank/b_red_4.gif" align="absMiddle" border="0"></A>
    <A href="http://fx.taoo.com/u/MjgxODkzNjY2/view/ta_taoshare_list.htm?redirect=fa" target="_blank">的勺 </A><A href="http://rate.taoo.com/user-rate-8907ad41fbab5b9bbe534d881bba661e.htm" target="_blank"><IMG title="请点击查看详情" src="http://pics.cdn.com/newrank/b_r0.gif" align="absMiddle" border="0"></A>
    eof;
    $f = "/<a\s+href=\"(.*?)\"\s+target=\"_blank\">(?!<img[^>]*>)(.*?)<\/a>/i";
    $t = "<a href=\"http://www.a.com/a.php?g=\\2\" target=\"_blank\">\\2</a>";
    $str = preg_replace($f,$t,$str);
    echo $str ;输出:
    <a href="http://www.a.com/a.php?g=饭勺 " target="_blank">饭勺 </a><A href="http://rate.taoo.com/user-rate-8907ad41fbab5b9bbe534d881bba661e.htm" target="_blank"><IMG title="请点击查看详情" src="http://pics.cdn.com/newrank/b_red_4.gif" align="absMiddle" border="0"></A>
    <a href="http://www.a.com/a.php?g=的勺 " target="_blank">的勺 </a><A href="http://rate.taoo.com/user-rate-8907ad41fbab5b9bbe534d881bba661e.htm" target="_blank"><IMG title="请点击查看详情" src="http://pics.cdn.com/newrank/b_r0.gif" align="absMiddle" border="0"></A>
      

  3.   

    PCRE
    get: /<a[^>]+>(.+)<\/a>/uiU  
    如果不是unicode编码,"/"后面的小写u去掉,改成/iU
    另:不适合空格开头情况,最好加trim函数再处理才输出
    replace: <a href="http://www.a.com/a.php?g=\$1" target="_blank">\$1</a>