Подниму проблему написания bbcode парсера
Введение:
Итак написать парсер не составляет ничего сложного
пример кода
1. Alex_pac - 18 Августа, 2013 - 15:00:31 - перейти к сообщению
парсер
CODE (htmlphp):
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?php
- class bbcodeSimple {
- // массив стандартных тегов
- static $bb = array( # x5 столбцов
- # Флаги #первый тег #между тегами #закрывающий #Замена
- 'si', 'b', '(.+)', '/b', '<b>$1</b>',
- 'si', 'u', '(.+)', '/u', '<u>$1</u>',
- 'si', 'i', '(.+)', '/i', '<i>$1</i>',
- );
- // функция парсер
- function parse($text) {
- $text = trim($text);
- $text = htmlspecialchars($text,ENT_NOQUOTES);
- for ($i = 0; $i<count(self::$bb); $i+=5) {
- $text = preg_replace('#\['.self::$bb[$i+1].'\]'.self::$bb[$i+2].'\['.self::$bb[$i+3].'\]#'.self::$bb[$i],self::$bb[$i+4],$text);
- }
- // чистка неверных тегов
- $text = preg_replace('#(\[.+\]|\[/.+\])#Ui','',$text);
- $text = nl2br($text);
- return $text;
- }
- } // end class
- $text = '[b]hello world[/b] [i]привет[/i]';
- echo bbcodeSimple::parse($text);
Результат работы кода:
Цитата:
<b>hello world</b> <i>привет</i>
САБЖ:
Теперь вернемся к теме и попробуем распарсить вот такой bbcode: