1

次のコードを使用して、Web サイトで選択のオプションを見つけることができます。

$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);

I get (例として)

[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";
}

余談ですが、print_rSimpleXMLのデバッグに使用すると、オブジェクトの実際の状態が表示されないため、迷う可能性があります。simplexml_dumpもっと便利かもしれない関数を書きました。

于 2012-09-12T12:17:25.403 に答える