Использую библиотеку simple_html_dom. Считываю csv файл. Далее обращаюсь к колонке этого файла:
while (($info = fgetcsv($a, 0, ";") ) !== false){
$html = str_get_html(str_replace('\n','', iconv('windows-1251', 'utf-8', $info[5])));
var_dump($html); exit;
На экран выводится object(simple_html_dom) с контентом.
Убираю строку var_dump($html); exit; и валится:
Notice: Undefined offset: 5 in file.php on line 14
И за ним:
Fatal error: Call to a member function find() on boolean in file.php on line 16
Вот строка 16:
$inline_images = $html->find('img');
Если перед ней ставлю:
var_dump($html->find('img')); exit;
То возвращает пустой массив и никаких ошибок.
Почему так?
Во время ПЕРВОГО прохождения цикла значение которое берётся из массива $info[5], существует, в результате когда Вы вставляете var_dump($html); exit; Вы делаете dump $html переменной и закрываете дальнейшую обработку. Результат: ошибок нет.
1.1 Что происходит когда данную строку убираете. Начинается цикл заново и после выполнения функции fgetcsv присваивается новый массив в котором нет индекса 5!!! О чём сообщает данная ошибка Notice: Undefined offset: 5 in file.php on line 14
Функция str_get_html после выполнения в качестве результата возвращает false, так как какая-то из функций внутри возвращает данное значение (предположу что iconv не может преобразовать undefined в кодировку!). Результат: $html получает не объект а boolean значение, ну а из данного значения невозможно вызвать метод find() о чём сообщает вторая ошибка.
fgetcsv (предположительно). Решение. Отследить на какой итерации происходит не корректная отработка и поправить файл.if($html){
$inline_images = $html->find('a');
echo $inline_images;
}
Продвижение своими сайтами как стратегия роста и независимости