Списък чрез BBCode

AceXe

Registered
Използвам прост модел, чрез preg_replace за стилизиране на текст с bb код. Ето ви няколко примера:
Код:
$text=preg_replace("/\[b\](.+?)\[\/b\]/s", '<b>$1</b>',$text);
$text=preg_replace("/\[i\](.+?)\[\/i\]/s", '<i>$1</i>',$text);
$text=preg_replace("/\[u\](.+?)\[\/u\]/s", '<u>$1</u>',$text);

Сега обаче имам по-сложно задание поставено и от новия бб редактор. А това са списъците. Как точно да го накарам да изкарва при

Код:
[list]
[*]A
[*]B
[*]C
[/list]
Код:
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
</ul>
 
Код:
<?php
$code = "[list]
[*]A
[*]B
[*]C
[/list]";
$code = trim($code);
$arr = array("[list]","[/list]");
$arr_r = array("<ul>","</ul>");
$code = str_replace($arr, $arr_r, $code);
$code = preg_replace("|\[\*\](.*)|m", "<li>$1</li>", $code);
echo $code;
?>
 
Хмм не е това. В този форум примерно като пишеш нещо можеш да направиш списък с колкото и каквито си поискаш опции. Това ми трябва. Твоето не е това, защото каквото и да напиша и колкото и да са опциите ми излизат само две с B и C.
 
Така..тествах го и без промяна (само добавих няколко опции) изпълнението на този код
Код:
<?php
$code = "[list][*]A
[*]B
[*]C
[*]asd
[*]wplda'][*]
[*]_)(D_)(_@[*]
[/list]";
$arr = array("[list]","[/list]");
$arr_r = array("<ul>","</ul>");
$code = str_replace($arr, $arr_r, $code);
$code = preg_replace("|\[\*\](.*)|m", "<li>$1</li>", $code);
echo $code;
?>

връща следното:
Код:
<ul><li>A</li>
<li>B</li>
<li>C</li>
<li>asd</li>
<li>wplda'][*]</li>
<li>_)(D_)(_@[*]</li>
</ul>

Което е точно каквото ти искаш.Ако не е това, уточни малко повече за да преправя скрипта.. :?:
 
Не се получи, но няма проблем. Съжалявам за забавянето и ти благодаря, че се отзова :) +1
 

Back
Горе