Кода работи като се дефинира една функция, на която може и се
подава текста, в който има bbcode. Функцията го обработва и заменя bbcode-а с
хтмл код, който сте описали.
function BBCODE($bbcode)
{
// bbcode кодовете, който ще бъдат
заменени..
$bbc_a=array("[str]","[/str]","[b]","[/b]","[u]","[/u]","[big]","[/big]","[huge]","[/huge]","[email]","[/email]","[url]","[/url]","[red]","[/red]","[orange]","[/orange]","[green]","[/green]","[blue]","[/blue]");
//html съответствията, с които ще се замени
bbcode-а
$bbc_b=array("<strike>","</strike>","<b>","</b>","<u>","</u>","<font size=4>","</font>","<font size=8>","</font>","<a href="mailto:","">E-MAIL LINK</a>","<a href="","" target="blank">WEB LINK</a>","<font color=#ff6666>","</font>","<font color=#ffaa66>","</font>","<font color=#66ff66>","</font>","<font color=#6666ff>","</font>");
$bbc_num=count($bbc_a);
$loop=0;
while($loop<$bbc_num)
{
$bbcode=str_replace($bbc_a[$loop], $bbc_b[$loop], $bbcode);
$loop++;
}
return $bbcode;
}
<!-- php buffer end -->$string = "hi this is [b]BOLD[/b]";
$string = BBCODE($string);
echo $string;
<!-- php buffer end -->
Ми то хубаво е да пишеш уроци, но трябва и да пишеш добри уроци, особенно що се отнася до код.
Този тук е пълен с дупки, най-голямата от който е пропуска на каквато и да е проверка от страна на скрипт-а за таг-ове , винати трябва да се филтрират. В този случай извикването на функцията по този начин:
$string = "hi this is [b]BOLD[/b]alert('дупка');";
$string = BBCODE($string);
Ще изпълни скрипт-а, което не е желателно.
Ако скрипта записва ббкодовете в база данни и после след четене ги променя на хтмл тагове става още по кофти, защото тогава идва на ред SQL Injection-a :(
Филтрация на данните с регуларни изрази и/или стрипване на всички тагове, е добър метод за защита. :zzz