Задать вопрос
@Romua1d

Preg_match_all пропускает значения, почему?

Всем привет, написал легкий парсер, который выдирает из xml файла ip adress и домен, которые взяты в теги ,
$homepage = file_get_contents('url');

preg_match_all("/(\-|((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?))(?=<\/ip>)|([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}(?=<\/dns>)/", $homepage, $output_array);
 foreach ($output_array1[0] as $key => $value) {
        if (($key) % 2 == 0) {
            echo 'add address='. $value .' ';
    }
    elseif (($key + 1) % 2 == 0){

    echo 'name='. $value .'</br>';
    }
 }

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

d47f497a2196406f91267d1a46a8230d.pngfbd87633d55e468c9bb72f998666b58b.png
  • Вопрос задан
  • 240 просмотров
Подписаться Оценить Комментировать
Решения вопроса 1
@Romua1d Автор вопроса
В комментариях подсказали, что XML уже и есть решение задачи. Не нужно ходить вокруг, просто берем и извлекаем из него те элементы, которые заключены в теги

$xml = simplexml_load_file('url');
foreach ($xml->resource as $resource) {
echo "add address=" . $resource->ip . " name=" . $resource->dns . "</br>";
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ну вот например, а что нужно? regexr.com/3bptl
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы