Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: некорректно обрабатывается символ &

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
steamer
Отправлено: 09 Мая, 2010 - 00:15:24
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




Добрый день. Некорректно обрабатывается символ &.
Достаю текст из БД, там есть &qout; при этом в исходно коде готовой страницы стоит &qout; и текст далее.
Структура файлов такова:
Основной файл, в нем создается класс для работы с базой, само тело класса храниться в инклудном файле. Значение из метода не возвращается, текст выводится при помощи эхо из самого метода.

Как избавиться от этой замены.
p/s Проверял, в самом классе после вытаскивания текста из базы еще символ &. Т.к. preg_replace на замену &amp не действует, а если просто указать preg_replace("/\&/", "", $text), то символ удаляется. Значит это происходит где то на этапе передачи данных из метода в основной документ.
 
 Top
valenok Модератор
Отправлено: 09 Мая, 2010 - 01:03:09
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Проверьте символы <>" . Если они тоже превращаются в html сущности, то ищите в коде какой нибудь htmlspecialchars


-----
Truly yours, Sasha.
 
My status
 Top
Champion Супермодератор
Отправлено: 09 Мая, 2010 - 08:25:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




steamer пишет:
preg_replace на замену &amp не действует
Может быть нужно применять preg_replace просто в более поздней точке программы, когда &amp уже появился?

А вообще, действительно, похоже, что 2 раза работает htmlspecialchars / htmlentities / что-то самодельное. Либо 2 раза после выборки, либо один раз перед вставкой и один раз после выборки. Надо это отыскать.
steamer пишет:
Проверял, в самом классе после вытаскивания текста из базы еще символ &.
Значит 2 раза после выборки.
 
 Top
steamer
Отправлено: 09 Мая, 2010 - 13:25:31
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




htmlspecialchars этих функций нет. Я сам писал код, и не обрабатывал этими функциями.
Решение нашел.
Отключил magic_quotes и после этого можно стало корректно заменять из любого места preg_replace ("/\&quot;/",'"', $var);
 
 Top
JustUserR
Отправлено: 09 Мая, 2010 - 15:30:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




steamer пишет:
Отключил magic_quotes и после этого можно стало корректно заменять из любого места
В принципе можно было скомбинировать функции stripslahes и html_entity_decode для получения схожего результата


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Champion Супермодератор
Отправлено: 09 Мая, 2010 - 16:01:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Никогда не видел, чтоб волшебные кавычки заменяли что-то на html-сущности. Странно как-то.
steamer пишет:
preg_replace ("/\&quot;/",'"', $var);
Вот это по сути html_entity_decode. В любом случае, не стоит использовать регулярнуе выражения, когда строка замены не одержит никаких выкрутасов.
 
 Top
JustUserR
Отправлено: 10 Мая, 2010 - 01:05:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Champion пишет:
Никогда не видел, чтоб волшебные кавычки заменяли что-то на html-сущности. Странно как-то. Вот это по сути html_entity_decode
Конечно сами magic_quotes никак не взаимодействуют с html-сущностями и занимаются обычным экранированием строки - однако если данные сначала были обработаны лишний раз magin_quotes и стали в виде \" а после чего к ним был применен htmlentities - то очевидно для получения оригинальной строки потребуется такая же двойная расшифровка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB