@Domovik93
BackEndDev

Что я делаю не так с file_get_contents?

<?php
$str=file_get_contents('*******page=1');
preg_match_all('#<a class="item last" href="/rus/list/avtoservis\?page=(.+?)#su', $str, $pages);
dd($pages);

сам тег
<a class="item last" href="/rus/list/avtoservis?page=5">последняя »</a>

мне нужно вытащить цифру пять , а в итоге получаю два нумерованных массива. Нужная цифра там присутствует, но я не понимаю откуда остальные данные берутся.

array:2 [▼
  0 => array:2 [▼
    0 => "<a class="item last" href="/rus/list/avtoservis?page=5"
    1 => "<a class="item last" href="/rus/list/avtoservis?page=5"
  ]
  1 => array:2 [▼
    0 => "5"
    1 => "5"
  ]
]
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
@dzhebrak
Вероятно на странице два блока пагинации, которые соответствуют указанному регулярному выражению.

По умолчанию в preg_match_all передается флаг PREG_PATTERN_ORDER

PREG_PATTERN_ORDER
Упорядочивает результаты так, что элемент $matches[0] содержит массив полных вхождений шаблона, элемент $matches[1] содержит массив вхождений первой подмаски и т.д.

Поэтому в $pages[0] указаны все вхождения шаблона, а в $pages[1] - вхождения первой подмаски (номер страницы в вашем случае).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
cr1gger
@cr1gger
Все дороги ведут в Рим — встретимся в Риме!
0 массив он всегда есть там вся найденная строка
1 то что тебе нужно
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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