Добрый день. Некорректно обрабатывается символ &.
Достаю текст из БД, там есть &qout; при этом в исходно коде готовой страницы стоит &qout; и текст далее.
Структура файлов такова:
Основной файл, в нем создается класс для работы с базой, само тело класса храниться в инклудном файле. Значение из метода не возвращается, текст выводится при помощи эхо из самого метода.
Как избавиться от этой замены.
p/s Проверял, в самом классе после вытаскивания текста из базы еще символ &. Т.к. preg_replace на замену & не действует, а если просто указать preg_replace("/\&/", "", $text), то символ удаляется. Значит это происходит где то на этапе передачи данных из метода в основной документ.
1. steamer - 09 Мая, 2010 - 00:15:24 - перейти к сообщению
2. valenok - 09 Мая, 2010 - 01:03:09 - перейти к сообщению
Проверьте символы <>" . Если они тоже превращаются в html сущности, то ищите в коде какой нибудь htmlspecialchars
3. Champion - 09 Мая, 2010 - 08:25:24 - перейти к сообщению
steamer пишет:
Может быть нужно применять preg_replace просто в более поздней точке программы, когда & уже появился?preg_replace на замену & не действует
А вообще, действительно, похоже, что 2 раза работает htmlspecialchars / htmlentities / что-то самодельное. Либо 2 раза после выборки, либо один раз перед вставкой и один раз после выборки. Надо это отыскать.
steamer пишет:
Значит 2 раза после выборки.
Проверял, в самом классе после вытаскивания текста из базы еще символ &.
4. steamer - 09 Мая, 2010 - 13:25:31 - перейти к сообщению
htmlspecialchars этих функций нет. Я сам писал код, и не обрабатывал этими функциями.
Решение нашел.
Отключил magic_quotes и после этого можно стало корректно заменять из любого места preg_replace ("/\"/",'"', $var);
Решение нашел.
Отключил magic_quotes и после этого можно стало корректно заменять из любого места preg_replace ("/\"/",'"', $var);
5. JustUserR - 09 Мая, 2010 - 15:30:00 - перейти к сообщению
steamer пишет:
В принципе можно было скомбинировать функции stripslahes и html_entity_decode для получения схожего результата
Отключил magic_quotes и после этого можно стало корректно заменять из любого места
6. Champion - 09 Мая, 2010 - 16:01:40 - перейти к сообщению
Никогда не видел, чтоб волшебные кавычки заменяли что-то на html-сущности. Странно как-то.
steamer пишет:
Вот это по сути html_entity_decode. В любом случае, не стоит использовать регулярнуе выражения, когда строка замены не одержит никаких выкрутасов.
preg_replace ("/\"/",'"', $var);
7. JustUserR - 10 Мая, 2010 - 01:05:46 - перейти к сообщению
Champion пишет:
Конечно сами magic_quotes никак не взаимодействуют с html-сущностями и занимаются обычным экранированием строки - однако если данные сначала были обработаны лишний раз magin_quotes и стали в виде \" а после чего к ним был применен htmlentities - то очевидно для получения оригинальной строки потребуется такая же двойная расшифровка
Никогда не видел, чтоб волшебные кавычки заменяли что-то на html-сущности. Странно как-то. Вот это по сути html_entity_decode