在我获取的HTML页面中,有以下的HTML代码很多条<a onclick="LocalByDate('2010-07-30');" href="###"><p>7月30日</p><p class="base_price01"><dfn>¥</dfn>1280</p></a>求正则获取其中的红颜色部分!!!!

解决方案 »

  1.   


    $html = '<li><a onclick="LocalByDate(\'2010-07-30\');" href="###"><p>7月30日</p><p class="base_price01"><dfn>¥</dfn>1280</p></a></li>
    <li><a onclick="LocalByDate(\'2010-07-30\');" href="###"><p>7月30日</p><p class="base_price01"><dfn>¥</dfn>1280</p></a></li>
    <li><a onclick="LocalByDate(\'2010-07-30\');" href="###"><p>7月30日</p><p class="base_price01"><dfn>¥</dfn>1280</p></a></li>
    <li><a onclick="LocalByDate(\'2010-07-30\');" href="###"><p>7月30日</p><p class="base_price01"><dfn>¥</dfn>1280</p></a></li>
    <li><a onclick="LocalByDate(\'2010-07-30\');" href="###"><p>7月30日</p><p class="base_price01"><dfn>¥</dfn>1280</p></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('~<a onclick="LocalByDate\(\'(.*?)\'\);"[^>]*?>.*?¥</dfn>(.*?)</p></a>~is',$html,$data);
    foreach($data[1] as $key=>$item){
    $result[$key]["date"]=$item;
    }
    foreach($data[2] as $key=>$item){
    $result[$key]["money"]=$item;
    }
    print_r($result);
      

  2.   

    $html = '<li><a onclick="LocalByDate(\'2010-07-30\');" href="###"><p>7月30日</p><p class="base_price01"><dfn>¥</dfn>1280</p></a></li>
    <li><a onclick="LocalByDate(\'2010-07-30\');" href="###"><p>7月30日</p><p class="base_price01"><dfn>¥</dfn>1280</p></a></li>
    <li><a onclick="LocalByDate(\'2010-07-30\');" href="###"><p>7月30日</p><p class="base_price01"><dfn>¥</dfn>1280</p></a></li>
    <li><a onclick="LocalByDate(\'2010-07-30\');" href="###"><p>7月30日</p><p class="base_price01"><dfn>¥</dfn>1280</p></a></li>
    <li><a onclick="LocalByDate(\'2010-07-30\');" href="###"><p>7月30日</p><p class="base_price01"><dfn>¥</dfn>1280</p></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('~<a onclick="LocalByDate\(\'(.*?)\'\);"[^>]*?>.*?¥</dfn>(.*?)</p></a>~is',$html,$data);
    foreach($data[1] as $key=>$item){
    $result[$key]["date"]=$item;
    }
    foreach($data[2] as $key=>$item){
    $result[$key]["money"]=$item;
    }
    print_r($result);
      

  3.   

    <?php
    $string = <<<EOD
    <a onclick="LocalByDate('2010-07-30');" href="###"><p>7月30日</p><p class="base_price01"><dfn>¥</dfn>1280</p></a>
    EOD;
    $pattern = '/LocalByDate\(\'([0-9-]+)\'\).*<\/dfn>([0-9]+)<\/p>.*/';
    preg_match_all($pattern, $string, $matches);
    print_r($matches);
    ?>
      

  4.   

    <?php
    $str = <<<HTML
    <a onclick="LocalByDate('2010-07-30');" href="###"><p>7月30日</p><p class="base_price01"><dfn>¥</dfn>1280</p></a>
    HTML;
    preg_match_all("#'(\d{4}-\d{2}-\d{2})'.+</dfn>(\d+)<#i",$str,$m);
    var_dump($m);
    ?>
      

  5.   

    $s = <<< TEXT
    <a onclick="LocalByDate('2010-07-30');" href="###"><p>7月30日</p><p class="base_price01"><dfn>&yen;</dfn>1280</p></a>
    TEXT;preg_match_all("/([-\d]+)['<]/", $s, $r);
    print_r($r[1]); //Array ( [0] => 2010-07-30 [1] => 1280 ) 
      

  6.   

    preg_match_all("/([-\d]+).+>(\d+)<]/si", $s, $r);
    print_r($r[1]); //Array ( [0] => 2010-07-30 [1] => 1280 )