【问题标题】:getting content value from meta tag [closed]从元标记获取内容值[关闭]
【发布时间】:2013-06-28 16:46:18
【问题描述】:

考虑以下代码:

<div class="item">
  <meta content="2013-06-28" itemprop="date">
</div>
<div class="item">
  <meta content="2013-06-27" itemprop="date">
</div>
<div class="item">
  <meta content="2013-06-25" itemprop="date">
</div>
...

使用 php 和 DOM/xPath,我将如何提取日期值?

【问题讨论】:

  • 到目前为止你尝试过什么代码?
  • $itemprops = $xpath-&gt;query("//@itemprop"); foreach ($itemprops as $itemprop) { $name = $itemprop-&gt;nodeValue; $value = $itemprop-&gt;nodeValue; } // $name 正确但 $value 为空。还尝试通过 parentNode、getAttribute 获取值,但无法正确获取。
  • 在您的问题中提供一个工作代码。示例显示 - 执行时 - 您的问题。

标签: php dom xpath


【解决方案1】:

这应该可以帮助您入门:

<?php
$html = <<< ENDL
<div class="item">
  <meta content="2013-06-28" itemprop="date">
</div>
<div class="item">
  <meta content="2013-06-27" itemprop="date">
</div>
<div class="item">
  <meta content="2013-06-25" itemprop="date">
</div>  
ENDL;

$doc = new DomDocument();
$doc->loadHTML($html);
$xpath = new DOMXpath($doc);

$metas = $xpath->query("*/div[@class='item']/meta");
if(count($metas)) {
  foreach($metas as $key => $element) {
      echo "[{$element->nodeName}]";
      foreach($element->attributes as $attrName => $attrValue) {
          echo "$attrName = $attrValue->nodeValue<br>";
      }
  }
} else {
  echo "No metas found!";
}
?>

将导致:

[meta]content = 2013-06-28
itemprop = date
[meta]content = 2013-06-27
itemprop = date
[meta]content = 2013-06-25
itemprop = date

【讨论】:

    【解决方案2】:

    如果你只想要日期,这个 xpath 会全部返回:

    //meta[@itemprop = "date"]/@content
    

    【讨论】:

      猜你喜欢
      • 2019-07-30
      • 2013-12-21
      • 2012-12-04
      • 2013-08-10
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-24
      相关资源
      最近更新 更多