Главная страница статей --> Советы по фотошопу, графике и хитрости в построении php кода

BB-коды

Источник: realcoding.net

Сразу оговорюсь, что лучше сделать функцию, которая будет проверять текст на BB-коды и выдавать его пользователю. Т.е. лучше хранить данные на сервере с BB-кодами, чем с HTML. Хоть времени на выдачу документа будет тратится немного больше, зато вы в любое время сможете изменить стиль для того или иного BB-кода. И для этого не нужно будет перебирать и изменять все документы, а только одну строчку в коде.
Для начала я Вас познакомлю с двумя функциями:

str_replace()


Синтаксис:

string str_replace(string from, string to, string str)

Функция str_replace() заменяет в исходной строке str одни подстроки на другие. Т.е. функция заменяет в строке str все вхождения подстроки from на to и возвращает результат. Эта функция может работать с двоичными строками.

Функция, вообще говоря, нужная. К примеру, если Вы пишите что-то типа гостевой книги, форума, и хотите, чтобы в форме ввода для выделения теста можно было пользоваться стандартными тегами HTML, Вы можете с помощью этой функции заменить символы, которые Вы выбрали для форматирования на стандартные теги НТML.
К примеру:

$txt = str_replace([B],<B>,$txt);

Т.е. если Вы используете для отображения текста полужирным шрифтом символы "[B]", Вы должны их заменить на символ "<B>", используемые в НТМL.

preg_replace()


Синтаксис:

mixed preg_replace (mixed pattern, mixed replacement, mixed subject [,int limit])

Эта функция ищет в строке subject соответствия регулярному выражению pattern, и заменяет их на replacement. Необязательного параметр limit задает число соответствий, которые надо заменить. Если этот параметр не указан, или равен -1, то заменяются все найденные соответствия.

<?
$str = May 15, 2003;
$pattern = /(\w+) (\d+), (\d+)/i;
$replacement = 1 \${1} \$3;
print
preg_replace($pattern, $replacement, $str);
?>

Результат:

1 May 2003

Думаю с функцией str_replace() все понятно, поэтому мы можем сразу перейти к написанию первой части нашей программы:

$text = str_replace([b], <b>, $text);
$text = str_replace([/b], </b>, $text);

$text = str_replace([i], <i>, $text);
$text = str_replace([/i], </i>, $text);

$text = str_replace([u], <u>, $text);
$text = str_replace([/u], </u>, $text);
...

В выше приведенном коде мы заменяем BB-коды на их HTML эквиваленты. Все бы хорошо, да вот только BB-коды бывают и посложнее, например:

color=#FF0000]Красный[/color]

Чтобы перебрать все значения цветов (от #000000 до #FFFFFF), потребуется время, причем если делать эту проверку к каждому документу, то время загрузки документа быстро увеличивается. Как же тогда быть? Да очень просто, внимательнее вчитайтесь в эту функцию: “preg_replace()”.
Кто незнаком с регулярными выражениями, советую прочитать об этом материал.

$search[] = #\[color=\# ([a-f0-9]{6})\](.*?)\[/color\]#si;
$search[] = #\[size=([1-6]{1})\](.*?)\[/size\]#si;

$search[] = #\[email\]([a-z0-9\._-]{1,})+@([a-z0-9\._-]{1,})+\.([a-z]{2,4})\[/email\]#si;
$search[] = #\[email=\” ([a-z0-9\”_-]{1,})+@([a-z0-9\”_-]{1,})+\”([a-z]{2,4})\”\](.*?)\[/email\]#si;
...

$replace[] = <font color=#\1>\2</font>;
$replace[] = <font size=\1>\2</font>;

$replace[] = <a href=mailto://\1@\2.\3>\1@\2.\3</a>;
$replace[] = <a href=mailto:\1@\2.\3>\4</a>;
...

$text = preg_replace($search, $replace, $text);

Разбираем выше написанный код. Создаем два массива $search и $replace. В первом записано регулярное выражение, которое ищется в тексте, а во втором на что нужно заменить соответственно.

Я думаю идея понятна, так что сможете сами сделать для своего сайта любые коды, причем не только BB, но можете еще придумать и свои. Или воспользоваться вот этими:
http://wackowiki.com/WackoDokumentacija/WackoSintaksis?v=xya



Похожие статьи:
- Дядя Гугл — великан
- Разработка фирменного стиля
- Сверхдинамичные веб-интерфейсы
- Оптимизация для MSN
- RSS генератор
- Шаблоны в PHP для чайников
- Гостевая книга на PHP
- В каких поисковиках надо раскручиваться?
- Использование HTML-таблиц для вывода диаграмм
- Сколько человек на сайте?
- Безопасное программирование на PHP
- Генератор паролей
- Про тэги и метатэги


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |

Контакты
Редакция:
[0.001]