За последние 24 часа нас посетили 22337 программистов и 1025 роботов. Сейчас ищут 643 программиста ...

Ошибка Encoding с cURL + Transfer-Encoding: chunked

Тема в разделе "PHP для профи", создана пользователем Rassol2, 24 фев 2021.

  1. Rassol2

    Rassol2 Новичок

    С нами с:
    8 июл 2019
    Сообщения:
    31
    Симпатии:
    1
    Здравствуйте.
    Суть проблемы такова, если получать код через cURL с сайта
    К примеру
    https://natali37.ru/product/7248

    То код этой страницы не распознается функцией preg_match
    Он там не может найти ни содержимое тайтла, да ничего в принципе.

    Но если дернуть эту страницу через file_get_contents
    Уже все работает.

    Я подозреваю что вопрос связанный с
    Transfer-Encoding: chunked

    В курле при запросе установлен параметр.
    Код (Text):
    1. curl_setopt($curl_array[$i], CURLOPT_ENCODING, "");
    По инструкции это значит все доступные кодировки.

    И вопрос куда копать то ? Не знаю даже от куда начать решать эту проблему.

    Почему предположение пало на кодировку.
    Если полученное тело страницы прогнать через
    htmlspecialchars($html)
    то эта функция отдает пустую строку. По инструкции в php.net это значит.

    Код (Text):
    1.  Преобразованная строка (string).
    2.  
    3. Если входная строка string содержит неверную последовательность символов в указанной кодировке encoding, то будет возвращаться пустая строка в случае, если флаги ENT_IGNORE или ENT_SUBSTITUTE не установлены.
    И действительно если прописать.
    htmlspecialchars($html, ENT_SUBSTITUTE)
    То код выводится.
    Отсюда и предположения про encoding

    Подскажите в какую сторно копать, что бы разрулить эту задачу.
    Заранее спасибо.
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.745
    Симпатии:
    1.319
    Адрес:
    Лень
    парсинг не обсуждается. Статья 7
     
  3. Rassol2

    Rassol2 Новичок

    С нами с:
    8 июл 2019
    Сообщения:
    31
    Симпатии:
    1
    ок.
    Но тут не парсинг обсуждается а проблема получения данных. И невозможность их обработать.
    Ну да ладно.
    можете удалить эту тему.