php 遍历 a 标签比如 str="<a class=''>sdfaasdf</a><a class=''>sdfaasdf</a><a class=''>sdfaasdf</a>"
用php 遍历a 给最后一个a 的class赋值

解决方案 »

  1.   

    如果只是给最后一个a的class赋值,直接替换就是了。不需要什么遍历。
      

  2.   

    $str = "<a class=''>sdfaasdf</a><a class=''>sdfaasdf</a><a class=''>sdfaasdf</a>";
    $str = htmlspecialchars($str);
    $arr = explode('sdfaasdf',$str);
    $three = $arr[2];
    $three = str_replace("class=''","class='test'",$three);
    $arr[2] = $three;
    $str = implode('sdfaasdf',$arr);
    $str = htmlspecialchars_decode($str);
    代码我写了下 应该可以的 你试下吧  
      

  3.   

    $str="<a class=''>sdfaasdf</a><a class=''>sdfaasdf</a><a class=''>sdfaasdf</a>";
    $class='test';
    echo stripslashes(preg_replace("#(<a class=')('>[^<]+</a>)$#e",'"$1"."$class"."$2"',$str));
      

  4.   


    $str="<a class='dfg'>sdfaasdf</a><a class='sdff'>sdfaasdf</a><a class='sdff'>sdfaasdf</a>";
    $class='test';
    echo stripslashes(preg_replace("#(<a class=')('>[^<]+</a>)$#e",'"$1"."$class"."$2"',$str));这样就不行了???
      

  5.   

    直接在css里定义一下不是更好吗?
      

  6.   

    用JQUERY吧,$("a").attr("your link");
      

  7.   

    preg_match_all "|<a*>*</a> |U"
    preg_replace "|<a class=\"(*)">*</a>" $1 "you classname"
      

  8.   

     如果是 $str="<a class='asdf'>sdfaasdf</a><a class='qwer'>sdfaasdf</a><a class='hjkl'>sdfaasdf</a>" 就不好使了哦
      

  9.   

    提问要把问题一次性说完!
    echo stripslashes(preg_replace("#(<a class=')[^']*('>[^<]+</a>)$#e",'"$1"."$class"."$2"',$str));
      

  10.   

    其实你可以这样$str="<a class='dfg'>sdfaasdf</a><a class='sdff'>sdfaasdf</a><a class='sdff'>sdfaasdf</a>";
    $doc = @DOMDocument::loadHTML($str);
    $n = $doc->getElementsByTagName('a');
    $n->item($n->length - 1)->setAttribute('class', 'test');
    echo $doc->saveHTML();
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
    <html><body><a class="dfg">sdfaasdf</a><a class="sdff">sdfaasdf</a><a class="test">sdfaasdf</a></body></html>
    DOMDocument::loadHTML($str) 居然会报 Strict Standards:  Non-static method DOMDocument::loadHTML() should not be called statically in ...
    可见现在的世界有多浮躁了(php 5.4.12)
      

  11.   

    XML 用的是 utf-8 编码,不可能乱码的