[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: BB код
gam0ra
Есть вот функция для bb кода вот но я не могу понять как сделать для тега <ul> и <li>
Так как <li> внутри тега <ul>

function bbcode($text){
$text = strip_tags($text);

$search = array(
'/\[b\](.*)\[\/b\]/is',
'/\[img\](.*)\[\/img\]/is',
'/\[url=(.*?)\](.*)\[\/url\]/is',
'/\[ul\](.*)\[\/ul\]/is',
'/\[li\](.*)\[\/li\]/is',
);


$replace = array(
"<b>$1</b>",
"<img src='$1'></img>",
"<a href='$1'>$2</a>",
"<ul>$1</ul>",
"<li>$1</li>",
);


$text = preg_replace($search,$replace,$text);
return $text;
}
FatCat
А посмотреть как в других движках это реализовано?
php
				while( preg_match( "#\n?\[list\](.+?)\[/list\]\n?#ies" , $txt ) )
{
$txt = preg_replace( "#\n?\[list\](.+?)\[/list\]\n?#ies", "\$this->regex_list('\\1')" , $txt );
}

while( preg_match( "#\n?\[list=(a|A|i|I|1)\](.+?)\[/list\]\n?#ies" , $txt ) )
{
$txt = preg_replace( "#\n?\[list=(a|A|i|I|1)\](.+?)\[/list\]\n?#ies", "\$this->regex_list('\\2','\\1')" , $txt );
}
	function regex_list( $txt="", $type="" )
{
if ($txt == "")
{
return;
}

//$txt = str_replace( "\n", "", str_replace( "\r\n", "\n", $txt ) );

if ( $type == "" )
{
// Unordered list.

return "<ul>".$this->regex_list_item($txt)."</ul>";
}
else
{
return "<ol type='$type'>".$this->regex_list_item($txt)."</ol>";
}
}


function regex_list_item($txt)
{
$txt = preg_replace( "#\[\*\]#", "</li><li>" , trim($txt) );

$txt = preg_replace( "#^</?li>#" , "", $txt );

return str_replace( "\n</li>", "</li>", $txt."</li>" );
}


Код форума
Простой список:
[
list]
[*]
Раз
[*]Два
[*]Три
[/list]


Нумерованный список:
[
list=1]
[*]
Раз
[*]Два
[*]Три
[/list]
Отображение
Простой список:
  • Раз
  • Два
  • Три


Нумерованный список:
  1. Раз
  2. Два
  3. Три


_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:

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