我有一些html如下:
<div id="tvcap">
<div class="c" id="tads">
<ol>
<li>
<div class="vsc vsta">
<h3>
<a id="pa1" href="">
</a>
<a id="vpa1" href="http://www.link1.com">
Link 1 Text 1</a>
</h3>
<div>
<div class="kv kva">
<cite>
www.link1.com</cite>
</div>
</div>
<span class="ac">Link 1 Text2</span>
</div>
</li>
<li>
<div class="vsc vsta">
<h3>
<a id="pa2" href="">
</a>
<a id="vpa2" href="http://www.link2.com">Link 2 Text 1</a>
</h3>
<div>
<div class="kv kva">
<cite>www.link2.com</cite>
</div>
</div>
<span class="ac">Link 2 Text 3</span>
<div>
<div class="oslk">
</div>
</div>
</div>
</li>
</ol>
</div>
</div>
可能会有未知数量的链接和文本,我希望迭代并能够访问每个链接和文本。
我正在使用simple html dom parser。
我找不到命令来获取div id'vpa1'。
我试过这个,但它什么也没有回复:
foreach($html->find('a') as $element)
if ($element->id == "vpa1") echo $element->href . '<br>';
如何基于id为vpa [$ i](vpa1,vpa2等)来获取每个链接和文本。
答案 0 :(得分:5)
从任意网页中提取特定div ID内容的功能
以下函数从指定的div中提取内容并返回它。如果找不到具有ID的div,则返回false。
function getHTMLByID($id, $html) {
$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTML($html);
$node = $dom->getElementById($id);
if ($node) {
return $dom->saveXML($node);
}
return FALSE;
}
$id
是您尝试提取其内容的<div>
的ID,$html
是您的HTML标记。
用法示例:
$html = file_get_contents('http://www.mysql.com/');
echo getHTMLByID('tagline', $html);
输出:
The world's most popular open source database
答案 1 :(得分:3)
此处代码可用作起点:
$some_html = file_get_contents('some_html.html'); // i put your html into some_html.html file
$doc = new DOMDocument();
$doc->loadHtml($some_html); // $some_html should contain your html string
$xpath = new DOMXPath($doc);
//process with no bugs
$result = $xpath->query('//*[@id="vpa1"]');
var_dump($result);
if (!empty($result)) {
foreach ( $result as $link ) {
var_dump($link->nodeValue);
}
}
// output
// object(DOMNodeList)#4 (1) { ["length"]=> int(1) } string(38) " Link 1 Text 1"
$result = $xpath->query('//a');
var_dump($result);
if (!empty($result)) {
foreach ( $result as $link ) {
var_dump($link->nodeValue);
}
}
// output
// object(DOMNodeList)#8 (1) { ["length"]=> int(4) } string(25) " " string(38) " Link 1 Text 1" string(17) " " string(13) "Link 2 Text 1"
答案 2 :(得分:1)
对我有用的是首先使用以下命令(使用simple dom parser)找到具有指定id字符串的div:
$div = $html->find('div#'.$divId)
然后使用div变量来访问更多内容。