我正在获取一些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"
我该如何完成?
答案 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个部分,并且所有部分都组成一个有效日期。