得到一个字符串
<li class="cat-item cat-item-1"><a href="http://192.168.0.116/edo25/?cat=1" title="book">A类</a>
</li>
<li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo25/?cat=3" title="software">B类</a>
</li>
<li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo5/?cat=3" title="software">C类</a>
</li>可能还有D类等等,不确定这个字符串有多长我想从里面截取内容   href="" 这里面的内容保存成一个数组
把A类 B类 C类 ..保存成一个数组。
请问应该怎么操作啊。

解决方案 »

  1.   


    <?php 
    $str =<<<eod
    <li class="cat-item cat-item-1"><a href="http://192.168.0.116/edo25/?cat=1" title="book">A类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo25/?cat=3" title="software">B类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo5/?cat=3" title="software">C类</a>
    </li>
    eod;
    preg_match_all("#<a href=\"([\s\S]*?)\"#i",$str, $matchs);
    echo "<pre>";
    print_r($matchs[1]);
    echo "</pre>";
    ?>
      

  2.   

    没看到后面还有要求
    <?php 
    $str =<<<eod
    <li class="cat-item cat-item-1"><a href="http://192.168.0.116/edo25/?cat=1" title="book">A类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo25/?cat=3" title="software">B类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo5/?cat=3" title="software">C类</a>
    </li>
    eod;
    preg_match_all("#<a href=\"([\s\S]*?)\"[\s\S]*?>([\s\S]*?)</a>#i",$str, $matchs);
    echo "<pre>";
    print_r($matchs);
    echo "</pre>";
    ?>
      

  3.   


    $html = '<li class="cat-item cat-item-1"><a href="http://192.168.0.116/edo25/?cat=1" title="book">A类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo25/?cat=3" title="software">B类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo5/?cat=3" title="software">C类</a>
    </li>
    <li class="cat-item cat-item-1"><a href="http://192.168.0.116/edo25/?cat=1" title="book">A类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo25/?cat=3" title="software">B类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo5/?cat=3" title="software">C类</a>
    </li>';$html = preg_replace('/>(\s+)/','>',$html);
    $html = preg_replace('/(\s+)</','<',$html);
    $html = preg_replace('/(\s+)/',' ',$html);
    $html = str_replace("\r\n",'',$html);
    $html = str_replace("\t",'',$html);
    echo "<pre>";
    $result=array();
    preg_match_all('~<li[^>]*?class="cat-item[^>"]*?"[^>]*?><a[^>]*?href="(.*?)"[^>]*?>(.*?)</a></li>~is',$html,$data);
    foreach($data[1] as $key=>$item){
    $result[$key]["href"]=$item;
    }
    foreach($data[2] as $key=>$item){
    $result[$key]["title"]=$item;
    }
    print_r($result);
      

  4.   

    <?php
    $str = <<< HTML
    <li class="cat-item cat-item-1"><a href="http://192.168.0.116/edo25/?cat=1" title="book">A类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo25/?cat=3" title="software">B类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo5/?cat=3" title="software">C类</a>
    </li>
    HTML;
    preg_match_all('#<a href="(.+)".+>(.+)</a>#Ui',$str,$m);
    var_dump($m);
    ?>
      

  5.   


    $s = <<<str
    <li class="cat-item cat-item-1"><a href="http://192.168.0.116/edo25/?cat=1" title="book">A类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo25/?cat=3" title="software">B类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo5/?cat=3" title="software">C类</a>
    </li>
    str;preg_match_all("/(http:\/\/\d+.\d+.\d+.\d+.\/.+\/\?cat=\d+).*>(.*)<.*>/", $s, $arr);
    var_dump($arr);
      

  6.   

    $str =<<<s
    <li class="cat-item cat-item-1"><a href="http://192.168.0.116/edo25/?cat=1" title="book">A类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo25/?cat=3" title="software">B类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo5/?cat=3" title="software">C类</a>
    </li>
    s;
    preg_match_all('/<a href=\"(.*)\"/',$str, $matchs);
    echo "<pre>";
    print_r($matchs[1]);
    echo "</pre>";
      

  7.   

    $s = <<<str
    <li class="cat-item cat-item-1"><a href="http://192.168.0.116/edo25/?cat=1" title="book">A类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo25/?cat=3" title="software">B类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo5/?cat=3" title="software">C类</a>
    </li>
    str;preg_match_all("/(http:\/\/\d+.\d+.\d+.\d+.\/.+\/\?cat=\d+).*>(.*)<.*>/", $s, $arr);
    var_dump($arr);<li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo5/?cat=3" title="software">C类</a>
    </li>====><li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo25/?cat=3" title="software">C类</a>
    </li>
    是这个吧??
      

  8.   

    $s = <<<str
    <li class="cat-item cat-item-1"><a href="http://192.168.0.116/edo25/?cat=1" title="book">A类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo25/?cat=3" title="software">B类</a>
    </li>
    <li class="cat-item cat-item-3"><a href="http://192.168.0.116/edo5/?cat=3" title="software">C类</a>
    </li>
    str;preg_match_all("/(http:\/\/\d+.\d+.\d+.\d+.\/.+\/\?cat=\d+).*>(.*)<.*>/", $s, $arr);
    var_dump($arr);