У меня есть данные, подобные следующим
<terminal:Text>1 #VS 5 J9 C9 D9 I9 Z9 W9 S9 H9 LHRMIA 1235 1705 744 0E</terminal:Text>
<terminal:Text> K9 Y9 B9 R9 L9 U9 M9 E9 Q9 X9 N9 O9 </terminal:Text>
<terminal:Text>2 #IB4637 F9 A9 J9 C9 D9 R9 I. W9 LHRMIA 1415 1825 * 744 0E</terminal:Text>
<terminal:Text> Z. Y9 B9 H9 K. M. L. V. S. N. Q. O.</terminal:Text>
<terminal:Text>3*O#AA 57 F7 A7 P7 J7 R7 D7 I7 Y7 LHRMIA 0945 1415 777 0E</terminal:Text>
<terminal:Text> B7 H7 K7 M7 L7 V7 G7 S7 Q7 N7 O7 </terminal:Text>
Я пытаюсь найти лучший способ разделения этих данных, чтобы получить нужные мне данные. Для начала делаю следующее
$elNum = 0;
while ($elNum < $elements->length)
{
$flightInfo = $elements->item($elNum)->nodeValue;
if ( preg_match('/^\\d/', $flightInfo ) === 1 )
{
++$elNum;
}
}
$elements представляет каждый текстовый элемент, который я ему передаю. Вот что я знаю. Основная строка всегда начинается с цифры, поэтому я использую preg_match. Строка, следующая за строкой, начинающейся с цифры, связана с предыдущей строкой. По сути, в приведенном выше примере для каждого рейса есть две строки.
Я думал о том, чтобы взорвать ряд на местах, но я мог бы сделать это, когда дело доходит до мест (J9, M., I7 и т. д.). Для начала мне нужны номера рейсов.
Номер рейса всегда начинается с #. Код авиакомпании всегда состоит из 2 заглавных букв, номер рейса может состоять из 1-4 цифр. Итак, с вышеизложенным я мог бы сделать что-то вроде
$pat = strpos($flightInfo, "#");
Это приведет меня к началу каждого номера рейса. Вот хитрая часть, номера рейсов не такие, как в примере выше. Первый - VS, затем 2 пробела, а затем 5 (таким образом, VS5). Второй прямолинейный, все вместе (IB4637). Последний - AA, затем 2 пробела, а затем 57 (AA57). Иногда есть только одно место.
Таким образом, код авиакомпании всегда будет прикреплен к #, и я знаю, что его длина всегда равна 2, поэтому, чтобы получить его, я мог бы сделать что-то вроде
$fltcode = substr($flightInfo, $pat+1, 2);
Мой главный вопрос заключается в том, как я могу обрабатывать числовую часть, когда она может иметь длину от 1 до 4, она может быть прикреплена к номеру рейса, но также может быть разделена одним или несколькими пробелами?
Любое руководство приветствуется.