Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Замена тэгов
 
 автор: Trunk   (23.01.2006 в 12:38)   письмо автору
 
 

Есть у меня новостная лента... В ней есть поддержка стандартных тэгов, заменяются с помощью str_replace. Такая проблема, если юзер откроет много [ b] , то всё что ниже этого поста становится жирным! Как решить такую проблему? Как это реализованно у Вас на форуме?

   
 
 автор: DDK   (23.01.2006 в 13:04)   письмо автору
 
   для: Trunk   (23.01.2006 в 12:38)
 

Используйте регулярные выражения. При их использовании заменяются только парные теги, т.е. если у тега нет пары, он просто не заменяется на html-тег. И ещё одно преимущество использования регулярных выражений - они не чувствительны к регистру BB-тега, т.е. [b ] или [B ] - для них не имеет значения. Вот код для трёх простых тегов b, i, u:

<?
$msg 
preg_replace"#\[b\](.+?)\[/b\]#is" "<b>\\1</b>" $msg);
$msg preg_replace"#\[i\](.+?)\[/i\]#is" "<i>\\1</i>" $msg);
$msg preg_replace"#\[u\](.+?)\[/u\]#is" "<u>\\1</u>" $msg);
?>


Регулярные выражения для остальных BB-тегов можно заимствовать из функции, опубликованной тут: http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=11806&page=1

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования