Php 如何解析html并从dt/dd创建数组
我有一个select元素,我想使用来自另一个网站的信息为其动态创建选项值。有关资料可浏览网页。它是“基类”列表。我尝试过使用DOMDocument类,但是我看不到任何使用url代替html文件的方法。我曾尝试使用file_get_html和foreach循环,但无法使其与网站上的数据格式兼容。它位于dt/dd元素中,元素没有id。从网站上获取信息并为我的select元素中的每个类创建选项值的最佳方法是什么 我通常使用它来测试查询。你最终会得到这样的结果Php 如何解析html并从dt/dd创建数组,php,html,parsing,Php,Html,Parsing,我有一个select元素,我想使用来自另一个网站的信息为其动态创建选项值。有关资料可浏览网页。它是“基类”列表。我尝试过使用DOMDocument类,但是我看不到任何使用url代替html文件的方法。我曾尝试使用file_get_html和foreach循环,但无法使其与网站上的数据格式兼容。它位于dt/dd元素中,元素没有id。从网站上获取信息并为我的select元素中的每个类创建选项值的最佳方法是什么 我通常使用它来测试查询。你最终会得到这样的结果 <?php $url = 'ht
<?php
$url = 'http://www.dandwiki.com/wiki/SRD:Classes';
$html = file_get_contents($url);
$dom = new DOMDocument();
//from file
@$dom->loadHTML($html);
//Creating a new DOMPath
$Xpath = new DOMXPath($dom);
// Get links
// //big Selects all <big> elements in the document.
// [text()="Base Classes"] with text "base classes"
// /.. get parent class
// /.. get parent class
// //a select all <a> elements
// /text() get text
$query = '//big[text()="Base Classes"]/../..//a/text()';
$entries = $Xpath->query($query);
foreach ($entries as $entry) {
echo $entry->nodeValue . "<br>";
}
?>
使用XPath。我刚刚在Firebug中测试了这个JavaScript代码,它返回了基类的文本数组:$x('//big[text()=“base classes”]/../../..//a/text()').map(函数(节点){return node.textContent;})
。您应该能够在PHP中使用相同的XPath表达式。非常感谢您!我一直在尝试对您的代码片段进行反向工程,我想我已经解决了所有问题,除了“/....”之外。根据我读到的和你的评论,/。。获取当前节点的父节点。如果查询的“//big…”部分选择了文本为“基类”的所有元素,为什么我们需要父节点?此外,为什么我们需要该父节点的父节点?还是我把它倒过来了?“/…”是否从右向左运行,这样我们就从“/a”开始,得到该节点()的父节点,以及该节点()的父节点?此外,代码不工作,我认为这是因为它不识别DOMDocument类。在index.php文件中,变量“$dom”高亮显示,提示建议创建DOMDocument类。我将Netbeans 8.0.2与XAMPP和PHP5.5.24一起使用。在phpinfo()部分中,Libxml处于活动状态并已启用,而DOM/XML处于启用状态。在php.ini文件中,我有扩展名\u dir=“C:\php\ext”。我看过一些论坛讨论php xml模块和dom扩展,但我不知道如何实现它。