【问题标题】:How do I get the src attribute of img tags?如何获取 img 标签的 src 属性?
【发布时间】:2011-09-20 10:49:53
【问题描述】:

我通过外部 url 加载 DOM:

$dom = new DOMDocument;
$dom->loadHTMLFile( "external_url.html" );

$arrayOfSources = array();

foreach( $dom->getElementsByTagName( "img" ) as $image )
    $arrayOfSources[] = $image->item(0)->getAttribute("src");

这样我想将img标签的所有src属性存储在一个数组中,但我一直收到错误Fatal error: Call to undefined method DOMDocument::item()

我在这里缺少什么?如何从 html 中的 img 标签中提取所有 src 属性?

【问题讨论】:

  • 应该是$arrayOfSources[] = $image->item[0]->getAttribute("src"); 注意方括号
  • @Kumary 我不认为这是正确的。 $image 是一个对象,而不是一个数组。
  • @alex,即使在那种情况下,对象中也没有名为item()的方法,AFAIK,他正在使用的对象是由其他对象组成的,他需要取消image(0)

标签: php dom domdocument


【解决方案1】:

试试:

$arrayOfSources[] = $image->getAttribute("src");

【讨论】:

    【解决方案2】:

    在该循环中,您无需使用item(0) 访问元素。

    该集合的迭代器允许您只对其执行 foreach() 并让它隐式访问 DOMNodeList 中的每个元素。

    【讨论】:

    • 正确!而且错误信息本身告诉对象没有名为item()的方法与该对象关联,明确不要使用它,我会简单地使用var_dump/print_r的史前方法来调试它。
    • 第二点,我在这里有一个问题,我会在这里使用simplexml,那会不会出错?
    • @Kumar:我更喜欢使用 DOMDocument 自己解析 HTML。
    • 有什么优势吗?我使用 simplexml 完成了一个小型个人项目,发现它很快,但不是专家,所以想了解为什么首选 DOMDocument?
    【解决方案3】:

    删除->item(0) 部分。


    【讨论】:

    • 这是我见过的最快(有效)的响应。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多