mysql_real_escape_string и html-сущности

Статус
В этой теме нельзя размещать новые ответы.

LEXAlForpostl

Мой дом здесь!
Регистрация
21 Май 2008
Сообщения
766
Реакции
228
Здравствуйте.
При работе с базами данным всегда экранирую добавляемые строки функцией mysql_real_escape_string. Однако, для того, чтобы в Wordpress'e была возможность разделения краткой и полной новости, необходимо добавить тег "<!--more-->". Проблема в том, что тег этот представляется в виде:

Естественно, cms этого не понимает и отображает строку <!--more-->.
Однако же, когда добавляешь вручную разрыв новости на краткую и полную, то в БД добавляется именно строка <!--more--> в "чистом" виде.
Без mysql_real_escape_string, естественно, MySQL ругается и не позволяет добавить новость.
Как же добавить в бд текст, в середине которого есть строка <!--more-->, которую нельзя изменять?
 
самый простой и действенный (но дурацкий с т.з. правильного программирования) способ - выполнять такой запрос :)
UPDATE table SET field = REPLACE(field, '&lt;--!more--&gt;', '<!--more-->')
 
что мешает взять phpmyadmin и посмотреть в каком виде <!--more--> сохраняется в базе mysql ???

или бекап mysql базы в notepad++ открыть и посмотреть

там то уж наверняка будет видно что и как.

Естественно надо будет создать тестовый пост разбитый тегом перед тем как в sql лезть
 
если в дампе sql оно хранится в виде <!--more--> то значит оно именно в таком виде туда и отправляется, и никаких других вариантов быть не может
в дампе точно экранирования никакого нет ??

тогда просто и тупо перед тем как делать mysql_real_escape_string делиш текст по признаку <!--more--> каждой из частей делаешь mysql_real_escape_string
потом объединяешь результаты добавляя между ними разделитель <!--more-->

explode
implode

или что проще после обработки всех данных целиком mysql_real_escape_string
делать замену в стринге через str_ireplace
строки &lt;--!more--&gt;
на <!--more-->
 
Проблема не в real_escape_string а в том что перед сохранением гдето используется htmlspecialchars или подобное и результат экранируется
Вместо того чтобы обрабатываться перед выводом на экран
 
Да и пофиг как там мускуль сохраняет строку - перед выводом декодируй html-сущности обратно в символы (htmlspecialchars_decode)!
 
Да и пофиг как там мускуль сохраняет строку - перед выводом декодируй html-сущности обратно в символы (htmlspecialchars_decode)!
Не стоит так делать, лучше найти где символы изначально икранируются, и там это убрать.

А вообще, лучше перед выводом заменять &lt;--!more--&gt; на то, что нужно, либо <!--more-->

А скажите, LEXAlForpostl, у вас форматирование текста вообще работает?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху