[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Экранирование некоторых HTML тегов
Страницы: 1, 2, 3, 4
sergeiss
Цитата (Winston @ 7.11.2014 - 23:10)
Ну и я слабо себе представляю ситуацию, что могут смениться теги...

Я так понял, что речь идет не о тэгах, а именно о кодах. Вот сегодня у них [b][/b], а завтра "вожжа под хвост ударила" и решили, что правильнее будет писать [strong][/strong].

Думаю, что кто так решит, тем надо головы оторвать и на правильное место приделать smile.gif Ибо нефиг.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Winston
Цитата (sergeiss @ 7.11.2014 - 21:15)
Думаю, что кто так решит, тем надо головы оторвать и на правильное место приделать  Ибо нефиг

Согласен, но не вижу причин не оставлять поддержку для старых тегов, в данном случае [b]
Arh
Winston
и я тоже мнения =)
посмотрел класс http://phpforum.su/index.php?showtopic=31503
нафигачен на скорую руку)
и костылять надо если вместо <b> делать <strong> и вместо <code> делать <code class="hljs php"> допустим, но если доработать, наверно сгодиться, надо еще потестировать.
Конечно ожидал чего то с меньшим количеством строк =)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Arh
Цитата (Winston @ 7.11.2014 - 23:10)
Цитата (Arh @ 7.11.2014 - 21:04)
ваше =)

Не, не мое smile.gif
Цитата (Arh @ 7.11.2014 - 21:04)
ну типа было [b][/b] а потом вдруг стало [strong][/strong]

Ну в таком случае нужно будет решать, либо делать обратную совместимость, либо как написали перелопачивать базу.
Ну и я слабо себе представляю ситуацию, что могут смениться теги... ладно новые иногда появляются, но существующие изменяются... если такое и бывает то ооочень редко.


опечатка, я хотел написать "вЫше" =)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Arh
Пробую написать костыль ради интереса. Не могу с регулярками разобраться никак.

class text {
#htmlspecialchars с исключениями
static function htmlspecialchars ($text = '',$tags = array('b','strong','code','div','ul','li','i','u','s','br','a','img','h1','h2','h3','h4','h5','h6')) {
$search = array();
$replace = array();
foreach ($tags as $key => $tag) {
$search1[] = '|<(.*?)'.$tag.'(.*?)>|';
$replace1[] = '◄$1'.$tag.'$2►';
$search2[] = '|◄(.*?)'.$tag.'(.*?)►|';
$replace2[] = '<$1'.$tag.'$2>';
}
return preg_replace($search2, $replace2, htmlspecialchars(
preg_replace($search1, $replace1, $text)
,
ENT_NOQUOTES
));
}
}


$text = '<i>курсив</i> <b>жирный</b> <code class="php">код</code>';
echo text::htmlspecialchars($text,array('code','b'));


Идея в том что разрешенные теги в тексте сначало заменяются на хрень где вместо < стоит ◄, потом этот текст обрабатывается htmlspecialchars , а потом обротно заменяются ◄ на <

Во первых не допру как убрать вторые переменные $search2,$replace2, просто поменять местами массивы не получается из за разделителя |
Во вторых получаются разного рода баги, подозреваю что из за (.*?)
Смысл <(.*?) был в том, что бы поменять теги </b> и <b> одновременно, те у которых есть слеш и те у которых нет, но фиг знает как туда слеш вставить.
Смысл (.*?)> был в том, что бы поменять теги с атрибутами и без.

Код который в примере работает, но например <div><b>жирный</b></div> уже глючит.

Подскажите)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.