PHP - извлечение значений XML и возврат условных значений - PullRequest
0 голосов
/ 17 декабря 2018

Я извлекаю некоторые xml и конвертирую их в csv, как в этом посте PHP - извлекает правильные значения XML, если элементы имеют похожие теги на запись .Если у меня есть неправильный элемент Date, такой как «0000-00-00» ... в CSV, я хочу, чтобы он был пустым ».

Это моя структура

Элементы 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 голосов
/ 17 декабря 2018

Вы можете проверить, является ли это действительной датой, разложив ее на год-месяц-день, а затем используя 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 части и что все части составляют действительную дату.

...