Выборка значений XML и возврат условных значений

Я собираю некоторые 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"

Как я могу сделать это?

0

Решение

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector