PHP-获取xml值并返回条件值

时间:2018-12-17 13:28:07

标签: php xml xpath xmlreader

我正在获取一些xml,并将其转换为与本帖子PHP - Fetch correct XML values if elements have similar tags per record类似的csv。如果我在csv中有一个不正确的Date元素,例如'0000-00-00'...,我希望它为空''。

这是我的结构

XML元素:

<abc:ABC>5EXZX4LPK</abc:ABC>
<abc:Date>0000-00-00</abc:Date> 
<abc:Name>I Bornheim</abc:Name>

php xpath xmlreader:

fputcsv(
  $output, 
  [
    $xpath->evaluate('string(abc:ABC)', $node),
    $xpath->evaluate('string(abc:Entity/abc:Date)', $node)        
    $xpath->evaluate('string(abc:Entity/abc:Name)', $node)
  ]
);

输出:

5EXZX4LPK,0000-00-00,"I Bornheim"  

所需的输出:

5EXZX4LPK,,"I Bornheim"  

我该如何完成?

1 个答案:

答案 0 :(得分:1)

您可以通过将日期分解为年月日,然后使用checkdate() ...

来检查日期是否有效。

$date = $xpath->evaluate('string(abc:Entity/abc:Date)', $node);
$parts = explode("-", $date);
$date = (count($parts)== 3) &&
    checkdate($parts[1], $parts[2], $parts[0]) ? $date : '';

这会用-分解日期,并检查是否有3个部分,并且所有部分都组成一个有效日期。