|
|
|
| Вот мой код, который с помощью функции preg_replace заменяет bbCode на HTML коде, не судите строго я новичок в регулярных выражениях.
function BbCode($str)
{
$str = preg_replace("/\[img align\=(.*)=(.*)](.*)\[\/img\]/Usi","<img align=\"\\1\" alt=\"\\2\" src=\"\\3\" border=\"0\" margin:20px/>",$str);
}
|
В итоге выходит что-то вроде этого:
[img align=left=Рисунок]1.jpg[/img] //Выравнивание по левому краю и описание alt=Рисунок
а мне бы хотелось, чтобы было вот так,
[img align=left alt=Рисунок]1.jpg[/img]
и чтобы выравнивание и описание были не обязательными параметрами, стоит мне только прописать,
[img align=left] 1.jpg[/img] без описания как отображается обычная текстовая строка, помогите пожалуйста как мне лучше написать? | |
|
|
|
|
|
|
|
для: algoritm
(08.01.2013 в 16:56)
| |
$str = preg_replace( "#\[img([^\]]*)\](.*?)\[/img\]#si", '<img$1 src="$2" border=0 margin:20px>', $str );
|
| |
|
|
|
|
автор: несовсем (10.01.2013 в 03:25) |
|
|
для: Sfinks
(10.01.2013 в 00:12)
| | останется только попросить пользователей не юзать XSS-инъекции и не издеваться над дизайном страниц | |
|
|
|
|
|
|
|
для: несовсем
(10.01.2013 в 03:25)
| | Ну да =) А что, не вариант? =)
С другой стороны, Ваше align\=(.*)=(.*) мало чем отличается, т.к. в $1 может быть и onclick и style.
Тогда проще всего не ухищряться с впихиванием всего в 1 РВ, а воспользоваться для более точного разбора функцией preg_replace_callback().
И еще вопрос - какие символы могут быть в атрибуте alt? Если любые, то пользователю нужно как-то вдолбить, что:
- либо его значение необходимо обрамлять кавычками и экранировать вложенные кавычки;
- либо он обязательно должен быть вторым и его значение - все что между = и ]
Вам какой вариант больше по душе?
По-моему второй предпочтительней. По крайней мере все ошибки и инъекции уйдут внутрь значения атрибута. | |
|
|
|
|
|
|
|
для: Sfinks
(10.01.2013 в 08:58)
| | Это только кусок кода, конечно я пропущу переменную $str через htmlspecialchars() и при внесение в базу у меня там еще несколько проверок стоит. Объясните как мне с помощью preg_replace_callback(), более точно разобрать bbCode [IMG]? | |
|
|
|
|
|
|
|
для: algoritm
(11.01.2013 в 01:34)
| | Вы не ответили на мой вопрос. А 2 варианта писать не охото.
И еще...
> конечно я пропущу переменную $str через htmlspecialchars() и при внесение в базу у меня там
> еще несколько проверок стоит.
При внесении в БД достаточно одной функции - mysql_real_escape_string()
В остальном вносите все как есть.
А обработку ВВ-кодов, фильтрацию и htmlspecialchars() лучше выполнять уже при выводе в браузер.
Поверьте, так меньше хлопот и шансов запутаться. | |
|
|
|