$ element = $ html-> find('a')不返回精确数组Simple DOM

时间:2013-11-30 21:05:45

标签: php arrays simple-html-dom

我有这段代码

<?php
    require_once('/simplehtmldom_1_5/simple_html_dom.php');
    // Create DOM from URL or file
        $html = str_get_html('<html><body><a href="http://www.google.com/">Google</a><br /><a  href="http://www.bing.com/">Bing</a></body></html>');
    // Find all links 
        $element = $html->find('a');
    print_r($element);
?>

从加载的html中,它包含2个'a'元素,即:

  1. http://www.google.com/
  2. http://www.bing.com/
  3. 那么,我应该期望print_r($ element)应该是一个包含这两个数组的数组,而是打印一个相当超级的原始数组。

    我需要更改以获得这些输出吗?请注意,数组的内容应为字符串

    Array
    (
        [0] => http://www.google.com/
        [1] => http://www.bing.com/
    )
    

    提前致谢并获得更多权力。

1 个答案:

答案 0 :(得分:1)

print_r($html->find('a'))print_r($element)为您提供了两个节点的数组,但它非常复杂。此外,它包含对象,因此您可以获取href属性值并将其存储在数组中。

这有效:

<?php
    require_once('/simplehtmldom_1_5/simple_html_dom.php');
    // Create DOM from URL or file
        $html = str_get_html('<html><body><a href="http://www.google.com/">Google</a><br /><a  href="http://www.bing.com/">Bing</a></body></html>');

        $output = array();
        foreach($html->find('a') as $element) 
            $output[] = $element->href;

        echo '<pre>' . print_r($output, TRUE) . '</pre>'; // echo output array as preformatted text
?>

输出:

Array
(
    [0] => http://www.google.com/
    [1] => http://www.bing.com/
)