Эта тема на forum.dklab.ru


Smartisha: самому не получается разобраться (
В общем - есть задача, обрабатывать текст перед записью в БД. В тексте могут встречаться html-тэги. С регэкспами дела не имел - поэтому прошу помощи... Формализованно задача звучит так:
заменять во всем, что находиться внутри пар символов '<' и '>' - " на \", если перед кавычкой уже не стоит слэш.
а во всем, что находиться вне пар символов '<' и '>' - заменять спец символы на их хтмл-эквиваленты (например " на &quot, & на &amp; , « на &laquo; ).
Дмитрий Котеров:
Неправильная у Вас задача.

Существует вообще-то 2 устойчивых способа:
1. В базе вообще ничего не заменять, а использовать htmlspecialchars() непосредственно перед вставкой на страницу.
2. Выполнять htmlspecialchars() перед вставкой в базу.

Естественно, в обоих случаях нужно использовать mysql_real_escape_string() перед вызовом mysql_query() (если речь о MySQL).

Ваш способ - ни то, ни другое.
Smartisha:
Наверное плохо обьяснил. Суть в том - что ничего внутри хтмл-тэгов менять не надо. Нужно подогнать только текст (вполне возможно - под некие довольно обсуждаемые типографские каноны, да заодно и всякие тиры-дефисы-скобки их хтмл-эквивалентом заменить), а все остальное - т.е. тэги/их атрибуты, возможно стили - оставить как есть. Точнее - экранировать спецсимволы (как раз функцией mysql_real_escape_string, по всей видимости).

Смысл вот в чем - есть контент проект. Данные (статьи и прочее) непременно должны быть в хтмл. Заранее объявлять используемые тэги (т.е. такие нам можно, а такие нет) желания нет никакого - хотелось бы некоторой универсальности. По всей видимости придется идти по где-то подсмотренному мной сценарию - вырезать тэги (параллельно их запоминая и заменяя на какой-нить неповторяющийся "заменитель"), обрабатывать полученную строку, отдельно обрабатывать тэги, все собирать вместе и наконец запихивать в базу. ТОлько вот одна проблема - с регэкспами я до сих пор никак. Завтра начинаю разбираться ).
Дмитрий Котеров:
http://wiki.xpoint.ru/PHP/GotovyeReshenija?v=19jm#h63-5
Smartisha:
Спасибо огромное! Я за несколько часов этого не нашел. ) Вы реально сэкономили мне довольно много времени. Еще раз спасибо!
bæv:
Ветка выделена в отдельную тему «мусор, не относящийся к теме»,
расположенную в форуме Мусоропровод (13 Февраля 2012, 10:29).

Эта тема на forum.dklab.ru