Это пример, есть страница 1.php на ней форма textarea куда я ввожу HTML код, я нажимаю отправить и.. полученные данные сохранятся в БД (где проходят экранирование). На 2.php должен вывестись введенный мною HTML код взятый из БД. я допустим туда вставляю: Код (Text): <span style="font-weight: bold;"></span> но выводится у меня этот текст с экранированием т.е.: Код (Text): <span style=\"font-weight: bold;\"></span> как быть? как избавиться от экранирования? нормально ли будет если я произведу замену вот так перед выводом данных: Код (PHP): str_replace( array('\"', "\'"), array('"', "'"), $str ); или это повлечет за собой еще какие то последствия, которые я по не опытности не замечу, а потом для меня это обернется.. может есть какая то встроенная функция на этот случай?
там наверху было слово пример не просто так, т.к. на самом деле все это происходит на CMS Wordpress там сложно что то найти
Костыльный вариант - функция stripslashes А вообще - скорее всего, надо рыться в настройках и конфигах CMS.
Код (PHP): $message = nl2br(htmlentities(stripslashes($_POST[message]), ENT_QUOTES, 'UTF-8')); strtr($post[message], array('<br />' => '', '<br>' => ''))
на самом деле всё просто. надо: при записи в базу: экранировать mysql_real_escape_string (или аналогичной для других расширений или использовать плейсхолдеры).больше ничего, блин, никаких нафиг доп. обработок. при выводе на страницу: htmlspecialchars - если НЕ нужны теги, или ничего не экранировать, если нужен html. strpslashes и обратные ей функции забыть как страшный сон.
Вот после такого нужно руки отрывать по плечи и вставлять зубочистки. А вообще вордпесы, джумлы гиблые двиги и просто на свалку надо гнать таких как они.