Php 解析HTML页面以将字段提取到数组中,如:value=>;选项\u文本
当前情景: 我正在用DomDocument将一个html页面加载到一个var中Php 解析HTML页面以将字段提取到数组中,如:value=>;选项\u文本,php,parsing,xpath,domdocument,Php,Parsing,Xpath,Domdocument,当前情景: 我正在用DomDocument将一个html页面加载到一个var中 $dom = new DOMDocument('1.0', 'UTF-8'); @$dom->loadHTML($html); 我需要解析3个选项字段列表。HTML如下所示: <li> <select id="advertiser" name="advertiser[]" multiple="multiple" autocomplete="off">
$dom = new DOMDocument('1.0', 'UTF-8');
@$dom->loadHTML($html);
我需要解析3个选项字段列表。HTML如下所示:
<li>
<select id="advertiser" name="advertiser[]" multiple="multiple" autocomplete="off"> <option value="35" >Website Adv 1</option>
<option value="36" >Website Adv 1</option> <option value="41" >Website Adv 1</option>
<option value="45" >Website Adv 1</option>
</select>
</li>
问题仍然是:
如何解析HTML页面以将选项选择的字段提取到一个数组中,如:value=>option\u text您发布的代码应该可以工作。您可以通过以下方式更改代码
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadHTML($html);
$xpath = new DOMXpath($dom);
$options = $xpath->query("*/select[@name='advertiser[]']/option");
$result = array();
foreach ($options as $option) {
$optionValue = $option->getAttribute('value');
$optionContent = $option->nodeValue;
$result[$optionValue] = $optionContent;
}
print_r($result);
将您想要的项目加载到$result数组中
结果应该是:
Array
(
[35] => Website Adv 1
[36] => Website Adv 1
[41] => Website Adv 1
[45] => Website Adv 1
)
你发布的代码应该有效。您可以通过以下方式更改代码
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadHTML($html);
$xpath = new DOMXpath($dom);
$options = $xpath->query("*/select[@name='advertiser[]']/option");
$result = array();
foreach ($options as $option) {
$optionValue = $option->getAttribute('value');
$optionContent = $option->nodeValue;
$result[$optionValue] = $optionContent;
}
print_r($result);
将您想要的项目加载到$result数组中
结果应该是:
Array
(
[35] => Website Adv 1
[36] => Website Adv 1
[41] => Website Adv 1
[45] => Website Adv 1
)
非常感谢。我认为有一个无形的错误围绕着。。。是的,这很有效。。我想可能是html页面的格式不正确或者什么的。。$html是cURL的结果/返回。。。我不明白。。html在那里,结果是空的..正如php页面所说()loadHtml函数返回一个布尔值来检查它是否是一个有效的html字符串。您可以检查它。因此,如果在选择输入之前还有任何其他内容,则任何类型的数据,如其他标记或文本。。Xpath不起作用……这可以用其他方法实现吗?如何按节点解析代码?谢谢。我认为有一个无形的错误围绕着。。。是的,这很有效。。我想可能是html页面的格式不正确或者什么的。。$html是cURL的结果/返回。。。我不明白。。html在那里,结果是空的..正如php页面所说()loadHtml函数返回一个布尔值来检查它是否是一个有效的html字符串。您可以检查它。因此,如果在选择输入之前还有任何其他内容,则任何类型的数据,如其他标记或文本。。Xpath不起作用……这可以用其他方法实现吗?如何按节点解析代码?我认为您应该选择[@name…而不是
*/select
我认为您应该选择[@name…而不是*/select