1

我可以使用以下代码在网站上找到选择的选项:

$dom = new DOMDocument();
$dom->loadHTMLFile('http://webseven.com.au/carl/testpage.htm');
$xml = simplexml_import_dom($dom);
//print_r($xml);
$select = $xml->xpath('//table/tr/td/select');
print_r($select);

我得到(例如)

[0] => SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [name] => product_OnWeb
                [tabindex] => 4
            )

        [option] => Array
            (
                [0] => Yes

                [1] => No


            )

    )

但我无法找到一种方法来找到哪些被选中。

这可以用 SimpleXML 完成还是有其他方法?

谢谢。

卡尔

4

1 回答 1

0

您需要遍历所有选项(使用foreach ( $node->option ... )),并检查selected属性(使用$node['selected']):

$dom = new DOMDocument();
$dom->loadHTMLFile('http://webseven.com.au/carl/testpage.htm');
$xml = simplexml_import_dom($dom);

$selects = $xml->xpath('//table/tr/td/select');
foreach ( $selects as $select_node )
{
    echo $select_node['name'] . ': ';

    foreach ( $select_node->option as $option_node )
    {
        if ( isset($option_node['selected']) )
        {
            echo $option_node['value'] . ' ';
        }
    }

    echo "\n";
}

顺便说一句,如果您用于调试 SimpleXML,您可能会误入歧途print_r,因为它不会向您显示对象的真实状态。我写了一个simplexml_dump可能更有用的函数。

于 2012-09-12T12:17:25.403 回答