我正在努力从网页的以下部分获取数据
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数组。
答案 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));