想要从网页获取特定数据

时间:2016-07-02 19:08:33

标签: php

我正在努力从网页的以下部分获取数据

Scene

我想从我正在使用

获取数据
<div id="menu_pannel">
 <ul class="sf-menu" id="nav">
    <li  class="current"><a href="/" class="current" >Home</a></li>

    <li class=""><a href="/schedule.php" class="" target="_blank">Schedule</a></li>

    <li class=""><a href="/categories/" class="">All Channels</a></li>

    <li class=""><a href="#" class="">Sports Channels</a>

         <ul id="submenu">
        <li><a href="http://www.time4tv.com/2011/01/sky-sports-1.php">Sky Sports 1</a></li>
        <li><a href="http://www.time4tv.com/2011/02/sky-sports-2.php">Sky Sports 2</a></li>
        <li><a href="http://www.time4tv.com/2011/03/sky-sports-3.php">Sky Sports 

但是获得了emty数组。

3 个答案:

答案 0 :(得分:0)

使用DOMDocument类来操作HTML内容:

// $html_str is your html fragment
$doc = new DOMDocument();
$doc->loadHTML($html_str);
$ul_content = "";

$ul = $doc->getElementsByTagName("ul")->item(0);
if ($ul && $ul->getAttribute('class') == 'sf-menu') {
    foreach ($ul->childNodes as $n) {
        $ul_content .= $doc->saveHTML($n);
    }
}

echo $ul_content;

答案 1 :(得分:0)

如果strip_tags($ html)没有返回你想要的内容,你可以使用这个例子来获取一个文本数组:

function getTextBetweenTags($string, $tagname) {
    preg_match_all("#<$tagname.*?>([^<]+)</$tagname>#", $string, $matches);
    return $matches[1];
}
$values = getTextBetweenTags ($html, 'a' );
foreach($values as $value) {
    echo $value . '<br>';
}

其中$ html是包含你的html的var。

答案 2 :(得分:0)

如果您决定使用dom解析器

$doc = new DOMDocument();
$doc->loadHTML($str);   
$x = new DomXpath($doc);
$ul = $x->query('//ul[@id="nav"]'); // 'id' is a unique identifier!
// Echo outerHTML of ul[@id="nav"]
echo $doc->saveHTML($ul->item(0));  

demo