<a href='#' title='提示1' class='a'>链接1</a><br /><a href='#' title='提示2' class='a'>链接2</a>
我想获取href后面所有的东西:
title='提示1' class='a'
title='提示2' class='a'
怎么获取

解决方案 »

  1.   

    $str = "<a href='#' title='提示1' class='a'>链接1</a><br /><a href='#' title='提示2' class='a'>链接2</a>";
    $reg = "/<a href[^ ]* ([^>]*)>/i";
    preg_match_all($reg, $str, $arr);
    echo '<pre>';print_r($arr[1]);
    /*
    输出:Array
    (
        [0] => title='提示1' class='a'
        [1] => title='提示2' class='a'
    )
    */
      

  2.   

    恩,原来有preg_match_all这个,谢谢
    其实我另外带来个问题来的,请帮我看下
    function rewriteoutput($type, $host) {
    $url = '';
    switch($type){
    case 'forum_forumdisplay':
    list(,, $fid, $page, $extra) = func_get_args();
    $r = array(
    '{fid}' => $fid,
    '{page}' => $page ? $page : 1,
    );
    $url = 'forum-{fid}-{page}.html';
    break;
    case 'forum_viewthread':
    list(,, $tid, $page, $extra) = func_get_args();
    $r = array(
    '{tid}' => $tid,
    '{page}' => $page ? $page : 1,
    );
    $url = 'thread-{tid}-{page}.html';
    break;
    }
    $href = str_replace(array_keys($r), $r, $url);
    return $extra;
    //return '<a href="'.$host.$href.'" '.(!empty($extra) ? stripslashes($extra) : '').'>';
    }<a href="forumdisplay.php?mod=forumdisplay&fid=1" title="进入版块1">版块1</a><br />
    function urlrewrite($content){
    $forum_search = "/<a href\=\"(.*)forumdisplay\.php\?mod\=forumdisplay&(amp;)?fid\=(\w+)(&(amp;)?page\=(\d+))?\"([^\>]*)>/i";$forum_replace = rewriteoutput('forum_forumdisplay','\\1', '\\3','\\6','\\7');$search_replace = array(
    $forum_search => $forum_replace,
    $thread_search => $thread_replace,
    );foreach($search_replace as $search => $replace){
    $content = preg_replace($search, $replace, $content);
    }
    return $content;
    }$content = ob_get_contents();
    echo urlrewrite($content);
    我想获取 title="进入版块1" 这块,为什么我获取的是title="进入版块1">版块1</a><br />这个呢?请问是哪儿的问题
      

  3.   

    首先你获取的是 title="进入版块1"版块1</a><br />
    而不是 title="进入版块1">版块1</a><br />
    你的正则表达式规则只匹配这部分
    <a href="forumdisplay.php?mod=forumdisplay&fid=1" title="进入版块1">版块1</a><br />所以替换时把 啊标记替换成了 title="进入版块1" 
    后面的 版块1</a><br /> 没有替换,原样返回这一点你可以这样观察到
    $s =<<< TXT
    <a href="forumdisplay.php?mod=forumdisplay&fid=1" title="进入版块1">版块1</a><br />
    TXT;
    preg_match($forum_search, $s, $r);
    print_r($r);7Array
    (
        [0] => <a href="forumdisplay.php?mod=forumdisplay&fid=1" title="进入版块1">
        [1] => 
        [2] => 
        [3] => 1
        [4] => 
        [5] => 
        [6] => 
        [7] =>  title="进入版块1"
    )
      

  4.   

    恩,你好,你写的是正确的
    请问我要怎么修改可以只获取  title="进入版块1" 而不是  title="进入版块1"版块1</a><br />
      

  5.   

    我不知道你想干什么
    如果是想将形如
    <a href="forumdisplay.php?mod=forumdisplay&amp;fid=1" title="进入版块1">版块1</a><br />
    替换成 title="进入版块1"
    只需在规则串中加个 .*
    "/<a href\=\"(.*)forumdisplay\.php\?mod\=forumdisplay&(amp;)?fid\=(\w+)(&(amp;)?page\=(\d+))?\"([^\>]*)>.*/i";不过其后的所有东西都不在了,应该不是你需要的如果只是想取得 title="进入版块1", 那么正则匹配结果数组的下标 7 就是你想要的
      

  6.   

    不知道你想干什么
    如果是想将形如
    <a href="forumdisplay.php?mod=forumdisplay&amp;fid=1" title="进入版块1">版块1</a><br />
    替换成 title="进入版块1"
    只需在规则串中加个 .*
    "/<a href\=\"(.*)forumdisplay\.php\?mod\=forumdisplay&(amp;)?fid\=(\w+)(&(amp;)?page\=(\d+))?\"([^\>]*)>.*/i";不过其后的所有东西都不在了,应该不是你需要的
      

  7.   

    恩,这样可以只获取到 title="进入版块1" 
    我的需求就是<a href="forumdisplay.php?mod=forumdisplay&fid=1&page=1" title="进入版块1">版块1</a><br />
    转换成:
    <a href="forum-1-1.html" title="进入版块1">版块1</a><br />