PHP: Почему foreach ($x as $key => $value) не хочет "расчехлять" массив?
Спарсил все заголовки сайта с помощью библиотеки PHP Query.

Два массива array(331) содержат строки с заголовками. Пытаюсь вывести их циклом с обрезкой точки маркировочного списка. Вот так:
require_once ('phpQuery-onefile.php');
$url = 'https://www.englishforcing.ru/o-nas/karta-sajta/';
$file = file_get_contents($url);
preg_match_all('|<li class="wsp-post">(.+)</li>|', $file, $matches);
foreach ($matches as $key => $value) {
var_dump(substr($value, 1));
}
Интерпретатор выводит мне ошибку: Warning: substr() expects parameter 1 to be string, array given in W:\domains\localhost\par.php on line 12
Не пойму, почему $key => $value не раскрыл массив до строк.
Если делаю проверку на тип:
foreach ($matches as $key => $value) {
if (is_string($value)) {
var_dump(substr($value, 1));
}
}
Получаю просто пустую страницу.
Подскажите, пожалуйста, как добраться до значений в цикле foreach и обрезать таки "несчастные" точки?
Ответы (1 шт):
Дело в том, что изначально в массиве $matches нужные Вам элементы находятся в массиве с индексом 0. Поэтому нужно обращаться к нулевому индексу. То есть, не $matches, а $matches[0].
Попробуйте так:
require_once ('phpQuery-onefile.php');
$url = 'https://www.englishforcing.ru/o-nas/karta-sajta/';
$file = file_get_contents($url);
preg_match_all('|<li class="wsp-post">(.+)</li>|', $file, $matches);
foreach ($matches[0] as $key => $value) {
var_dump(substr($value, 1));
}
Я получил массив с нужными элементами.