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

Функция str_replace() не работает?

Есть вот такой вот незамысловатый код:
$this->title = str_replace('"', '', $seo['ELEMENT_META_TITLE']) ?? null;

Который должен убрать символьный код кавычек из строки, но этого почему-то не происходит. Модифицирую данный код, чтобы посмотреть что там происходит:
echo '<pre>';
        var_dump($seo['ELEMENT_META_TITLE']);
        $this->title = str_replace('&quot;', '', $seo['ELEMENT_META_TITLE']) ?? null;
        var_dump(str_replace('&quot;', '', $seo['ELEMENT_META_TITLE']));
        var_dump($this->title);

Получаю следующий вывод:
string(275) "Хомут обжимной просечной (оцинкованная сталь) ширина 8 мм 3/4&quot; (13-19 мм) – купить по цене завода. Доставка по РФ. Смотреть характеристики, фото, отзывы."
string(275) "Хомут обжимной просечной (оцинкованная сталь) ширина 8 мм 3/4&quot; (13-19 мм) – купить по цене завода. Доставка по РФ. Смотреть характеристики, фото, отзывы."
string(275) "Хомут обжимной просечной (оцинкованная сталь) ширина 8 мм 3/4&quot; (13-19 мм) – купить по цене завода. Доставка по РФ. Смотреть характеристики, фото, отзывы."

То есть ничего не меняется, как будто бы функция не работает str_replace(). Но самое интересное что на тестовой площадке всё работает как надо и нежелательные символы уходят из строки, а вот в проде уже нет. Подскажите пожалуйста что за мистика?
  • Вопрос задан
  • 322 просмотра
Подписаться 1 Простой 16 комментариев
Решения вопроса 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
str_replace работает. Просто в строке нет того, что вы ищете.
Вероятно там такое ширина 8 мм 3/4&amp;quot;
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
vhood
@vhood
Не забывайте отмечать решения
html_entity_decode()

https://onlinephp.io/c/9d203 (при работе с этой строкой, учтите, что в строке есть кавычка)
Ответ написан
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
В строке не должно быть никакого&quot;
Надо взять железную линейку, и надавать по рукам тому, кто писал этот код.
После этого убрать из кода все вызовы функции htmlscpacialchars, все filter_var c идиотским FILTER_SANITIZE_STRING и вообще никак не портить входящие данные
И после этого спокойно удалять из строки обычную двойную кавычку.

А выводить любые данные через нормальный шаблонизатор.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы