Случайно отсутствующие узлы в html при очистке с помощью GuzzleClientPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Случайно отсутствующие узлы в html при очистке с помощью GuzzleClient

Сообщение Anonymous »

Здесь я имею дело с проблемой очистки из-за несогласованности дочерних элементов, которые иногда присутствуют, а иногда отсутствуют.

Поскольку я сохраняя состояние со ссылкой на массив $values[], я обнаружил, что иногда $value[18] — это адрес электронной почты, а иногда — телефон или факс.

Примерный массив из трех итераций выглядит следующим образом:

Код: Выделить всё

[0] => [
[1] => Firm: The Firm One Name
[2] => Firm:
[3] => The Firm One Name
[4] => Office: 5th Av. 18980, NY
[5] => Office:
[6] => 5th Av. 18980, NY
[7] => City: New York
[8] => City:
[9] => New York
[10] => Country: USA
[11] => Country:
[12] => USA
[13] => Tel: +123 4 567 890
[14] => Tel:
[15] => +123 4 567 890
[16] => Email: person.one@example.com
[17] => Email:
[18] => person.one@example.com
],
[1] => [
[1] => Firm: The Firm Two Name
[2] => Firm:
[3] => The Firm Two Name
[4] => Office: 5th Av. 342680, NY
[5] => Office:
[6] => 5th Av. 342680, NY
[7] => City: New York
[8] => City:
[9] => New York
[10] => Country: USA
[11] => Country:
[12] => USA
[13] => Tel: +123 4 567 890
[14] => Tel:
[15] => +123 4 567 890
[16] => Fax: +123 4 567 891
[17] => Fax:
[18] => +123 4 567 891
[19] => Email: person.two@example.com
[20] => Email:
[21] => person.two@example.com
],
[2] => [[1] => Firm: The Firm Three Name
[2] => Firm:
[3] => The Firm Three Name
[4] => Office: 5th Av. 89280, NY
[5] => Office:
[6] => 5th Av. 89280, NY
[7] => Country: USA
[8] => Country:
[9] => USA
[10] => Fax: +123 4 567 899
[11] => Fax:
[12] => +123 4 567 899
[13] => Email: person.three@example.com
[14] => Email:
[15] => person.three@example.com
]
Как это может быть заметно, когда я перебираю и сохраняю $values[15] последнего массива, который является адресом электронной почты, в первом [ 0][15] соответствует тел. номер.

Мой вопрос: есть ли более простой способ, чем делать «сумасшедший цикл» по полям и всегда сохранять электронное письмо как адрес электронной почты, а не номер телефона?

Я использую GuzzleClient() вместе с $node->filterXPath() и/или $node->filter() в зависимости от того, что мне нужно захватить.

Структура HTML, над которой я работаю, очень короткая и простая, как в примере ниже иногда узлы отсутствуют...:

Код: Выделить всё



Firm:

[url=http://example.com/123456/]Person One[/url]



Office:

[url=mailto:mperson.one@example.com]person.one@example.com[/url]




Подробнее здесь: https://stackoverflow.com/questions/502 ... zzleclient
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»