如何使用PHP DOM获取超链接?
我有一个简单的HTML结构:如何使用PHP DOM获取超链接?,php,dom,xpath,Php,Dom,Xpath,我有一个简单的HTML结构: <table> <tr> <td class="myStyle"> <a href="URLa">Name of URL a</a> </td> </tr> <tr> <td class="myStyle"> <a href="URLb">Name of URL b</a>
<table>
<tr>
<td class="myStyle">
<a href="URLa">Name of URL a</a>
</td>
</tr>
<tr>
<td class="myStyle">
<a href="URLb">Name of URL b</a>
</td>
</tr>
</table>
现在,我想通过PHPDOM了解如何获取这个URL以及名称
while($table = $tables->item($i++))
{
$class_node = $table->attributes->getNamedItem('class');
if($class_node)
{
if ($table->attributes->getNamedItem('class')->value == "myStyle") {
$links = $tables->item($i)->getElementsByTagName('a');
foreach ($links as $link) {
echo "<br>" . $link->nodeName;
}
//echo "Class is : " . $table->attributes->getNamedItem('class')->value . PHP_EOL;
}
}
}
while($table=$tables->item($i++))
{
$class_node=$table->attributes->getNamedItem('class');
if($class\u节点)
{
如果($table->attributes->getNamedItem('class')->value==“myStyle”){
$links=$tables->item($i)->getElementsByTagName('a');
foreach($links作为$link){
回声“
”$link->nodeName;
}
//echo“类是:“.$table->attributes->getNamedItem('Class')->value.PHP\u EOL;
}
}
}
到目前为止,我可以打印出每一行有“myStyle”类。但我无法从那里访问任何值或href
我知道XPath更方便,但我想先用DOM试试。
在XPath中,当遍历DOM时,我知道自己的位置。但是在这里,对于DOM,我想我不在我想要的循环中的那个位置。像这样继续
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('td') as $tag) {
if ($tag->getAttribute('class') === 'myStyle') {
foreach ($tag->getElementsByTagName('a') as $atag) {
echo $atag->getAttribute('href');
}
}
}
输出:
URLa
URLb
当我接近所需结果时,我通常使用var\u dump或var\u export来查看如何获得它。我建议先做一个
var\u dump($link)
看看te结构是什么。空的…:-(另外,var_dump($links)为空。屏幕完全空白。如果从var_dump($table)开始,会发生什么?如何初始化dom?能否将其作为单独的代码字段添加到问题中?问题可能就在那里。Shankar Damodaran给出了正确答案。