Ошибки HTML: mb_convert_encoding

Ryan Ryan 11 Июля 2023

Наткнулся на ошибку:

[19:38:08 11.07.2023 Europe/Moscow+03] Web:NOTICE mb_convert_encoding(): Handling HTML entities via mbstring is deprecated; use htmlspecialchars, htmlentities, or mb_encode_numericentity/mb_decode_numericentity instead {/yryr.ru/app/Core/URLScraper.php on line 53} yryr.ru/post/grabtitle 192.168.1.1 []

Даже не знаю что сказать. У меня просто появился лог, я о нем сообщил.

1 Ответ

  1. Evg Evg 11 Июля 2023

    Распишу чуть подробней, т.к. тут были скрыты много «проблем». При парсинге поста через URL.

    Нет ничего хуже, чем парсить html и пытаться от туда вытащить что-то нужное, например, заголовок. Так вот, сложно вытащить иногда заголовок, особенно если его вебмастер опубликовавший пост не оставил, а теги есть. smile

    пример:

    <title></title>

    Или…, в метатегах размещает вебмастер ссылку на картинку, но адрес если вбить в браузер, то будет редирект. Он в meta- дает ложные данные, пустые, с редиректами.

    Отсюда в старой версии и были предупреждения…

    В новой версии LibArea эту задачи теперь делают библиотеки от Symfony.

    "symfony/dom-crawler": "6.0.x-dev",
    "symfony/css-selector": "6.0.x-dev",
    "guzzlehttp/guzzle": "7.7.x-dev"

    Файла URLScraper.php в LibArea полностью переписан. Там больше не используется ничего подобного: mb_convert_encoding().

    Вроде Symfony хорошо справляется с разбором (и c guzzle) и с разными языками (мы тестировали и были в основном проблемы с арабским). Спасибо @jayabie — показывал разные «трудные» ссылки.

    Как обновлять будете, предупреждения это и исчезнет.