Помогни ни да направим Uroci.net по - богат! Добави урок
Категории Други уроци Adobe Photoshop Adobe Illustrator Adobe Flash Adobe Fireworks DreamWeaver CSS и HTML Corel Draw Image Ready PHP
PHP
SEO CMS Microsoft Windows Microsoft Word Microsoft Excel PowerPoint Microsoft Access Microsoft Publisher Linux Visual basic JavaScript Ajax 3ds Max Maya 3D C++ Sound Forge Gimp SWiSH

BBCODE с PHP

PHP » PHP
nma   трудност:    видян: 4056


Кода работи като се дефинира една функция, на която може и се подава текста, в който има bbcode. Функцията го обработва и заменя bbcode-а с хтмл код, който сте описали.

PHP Код:
<!-- php buffer start -->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 -->
Сега като искате да обработите стринг (текст) и да конвертирате bbcode-a в хтмл трябва единствено да да имате променлива, която се подава към функцията.
PHP Код:
<!-- php buffer start -->$string = "hi this is [b]BOLD[/b]";
$string = BBCODE($string);
echo
$string;
<!-- php buffer end -->
Резултат:

html кода ще е: hi this is <b>Bold</b>
това което ще видите в браузъра: hi this is Bold


Коментари (4)

Angel на 31.05 2006 в 06:54ч.
Привет,

Ми то хубаво е да пишеш уроци, но трябва и да пишеш добри уроци, особенно що се отнася до код.

Този тук е пълен с дупки, най-голямата от който е пропуска на каквато и да е проверка от страна на скрипт-а за таг-ове , винати трябва да се филтрират. В този случай извикването на функцията по този начин:

$string = "hi this is [b]BOLD[/b]alert('дупка');";
$string = BBCODE($string);

Ще изпълни скрипт-а, което не е желателно.
Ако скрипта записва ббкодовете в база данни и после след четене ги променя на хтмл тагове става още по кофти, защото тогава идва на ред SQL Injection-a :(

Филтрация на данните с регуларни изрази и/или стрипване на всички тагове, е добър метод за защита. :zzz
ISRalien на 10.09 2006 в 03:36ч.
Ангеле, не мисля, че целта на сайта е във всеки туториал да учат хората на сигурност, ще се получи едно доста голямо повторение. Според мен би било по-удачно да направят един урок специално по темата. Все пак хората не са написали цял сайт, а примерен код. Сигурността сам ще си я правиш.
sensor на 15.02 2007 в 20:32ч.
Кодът който си дал НЯМА да се изпълни ;) Нужни са тагове или пък по някакъв начин да се окаже, че се използва JS. Единственото което е нужно на горния скрипт е някаква забрана от изпълняване на чист HTML htmlspecialchars(); би свършил чудесна работа ;)

Поздрави ;)

$string = "hi this is BOLDalert('дупка');";
$string = BBCODE($string);
Emilcho на 21.12 2007 в 11:56ч.
На мене кода си ми бачка. Само ко искашда си спестиш малко място можеш да сложиш function-а в отделен файл (editor.php) и да напишеш
include("editor.php");
След това си добавяш $string-а и СА кефиш. :)

Регистрирайте се, за да добавите коментар


© Всички права запазени. 2006-2008. Created by: Site.bg
Препоръчваме: IT Новини | Кино и игри | Диплома.бг | Paparak.bg | Тунинг Портал | uchenik.com | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | AnimeS-bg.com | Фото Форум | Запознанства | Мрежа от приятели | IT Light | Spodeli.net | Фото-Култ | IDG.BG | Teenproblem.net | Блог - Образование | Fresh-BG.com | Hanovete.com | Bulfleet.com | Mythlands.com | Ohoboho.com | Казанлък.Com | News24 | Setcom.bg | Atol.bg | Elmaz.com | MobileBulgaria.com