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

Цикл foreach при echo выводит просто array?

Здравствуйте! Впервые столкнулся с проблемой. Парсю сайт, все что парсится с помощью preg_match_all идет в массив $title
Затем пробую массив перебрать циклом foreach, но в итоге при попытке все это вывести echo() , выводится просто слово array. При var_dump или print_r переменная $key выводится как массив прямо в цикле foreach. Что пошло не так?

$txt = "Doctor";
	$str_replsace = str_replace(" ", "+", $txt);
	$content = file_get_contents("https://www.bbc.co.uk/search?q=$str_replsace");
	
	preg_match_all('/<p class="css-1aofmbn-PromoHeadline e1f5wbog2"[^>]*?>(.*?)<\/p>/si', $content, $title);
	
	$titles= array_unique($title);

	foreach ($titles as $key) {
		echo $key;
	}
  • Вопрос задан
  • 271 просмотр
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 2
@galaxy
Так сделайте var_dump($title) до цикла и все поймете.
Ответ написан
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Посмотрите следущий вариант кода:
$txt = "Doctor";
$str_replsace = str_replace(" ", "+", $txt);
$content = file_get_contents("https://www.bbc.co.uk/search?q=$str_replsace");


preg_match_all('/<a [^>]+><span aria-hidden="false">([^<]+)<\/span><\/a>/im', $content, $matches);

$titles= array_unique($matches[1]);

//var_dump($titles);

foreach ($titles as $title) {
    echo $title . PHP_EOL;
}


На мой взгляд он должен работать. Проверить можно на PHPize.online
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽