streleca_stz
Registered
Здравейте! За съжаление не помня точно в коя тема (урок) беше, но бях намерил един много хубав скрипт за bbcodes.. Обаче сега гледам, че явно има проблем с него.. Ето как работи:
Записва се нормално в базата данни нали както са си bbcodes и за да се задейства кода трябва да се извика функцията bbcode($msg); А ето го и самата функция:
А ето го и проблема: Ако например искам да сложа линк+снимка => {url=link}{img}image{/img}{/url} става някаква много гадна каша.. не се изпълнява кода и го показва така <a href="link"><img src="image"
Не помня точно къде го процакваше.. същата работа и ако е само линка.. Някой знае ли как мога да ги оправя, защото ми трябват много..
Записва се нормално в базата данни нали както са си bbcodes и за да се задейства кода трябва да се извика функцията bbcode($msg); А ето го и самата функция:
PHP:
function bbcode($text){
$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);
$text=preg_replace("/\[l\](.+?)\[\/l\]/s", '<div style="text-align:left;">$1</div>',$text);
$text=preg_replace("/\[c\](.+?)\[\/c\]/s", '<div style="text-align:center;">$1</div>',$text);
$text=preg_replace("/\[r\](.+?)\[\/r\]/s", '<div style="text-align:right;">$1</div>',$text);
$text=preg_replace("/\[j\](.+?)\[\/j\]/s", '<div style="text-align:justify;">$1</div>',$text);
$text=preg_replace("/\[s\](.+?)\[\/s\]/s", '<strike>$1</strike>',$text);
$text=preg_replace("/\[list=un\](.+?)\[\/list\]/s", '<ul>$1</ul>',$text);
$text=preg_replace("/\[list=or\](.+?)\[\/list\]/s", '<ol>$1</ol>',$text);
$text=preg_replace("/\[\*\](.+?)\[\/\*\]/s", '<li>$1</li>',$text);
$text=preg_replace("/\[quote\](.+?)\[\/quote\]/s", '<table cellspacing="1" width="100%" border="0"><tr><td>Цитат:</td></tr><tr><td width="100%" style="background-color:#C7C7C7;border:solid 1px black">$1</td></tr></table>',$text);
$text=preg_replace("/\[quote\=(.+?)](.+?)\[\/quote\]/s", '<table cellspacing="1" width="100%" border="0"><tr><td>$1 каза:</td></tr><tr><td width="100%" style="background-color:#C7C7C7;border:solid 1px black">$2</td></tr></table>',$text);
$httpPtrn = 'http://[^\s]+';
$bbcodePtrn = '\[url\]('.$httpPtrn.')\[/url\]';
$bbcodeImg = '\[img\]('.$httpPtrn.')\[/img\]';
$bbcodePtrn2 = '\[url=('.$httpPtrn.')\](.+?)\[/url\]';
$bbcodeImg2 = '\[img=('.$httpPtrn.')\]('.$httpPtrn.')\[/img\]';
$matches = array ();
if (preg_match ('#'.$bbcodePtrn2.'#', $text, $matches) === 1) {
if(preg_match('/[^а-я]/i',$matches[1])) {$matches[1]=urldecode($matches[1]);}
$text = str_replace($matches[0],"<a href=\"{$matches[1]}\">{$matches[2]}</a>",$text);
}
else if (preg_match ('#'.$bbcodeImg2.'#', $text, $matches) === 1) {
if(preg_match('/[^а-я]/i',$matches[1])) {$matches[1]=urldecode($matches[1]);}
$text = str_replace($matches[0],"<a href=\"{$matches[1]}\"><img src=\"{$matches[2]}\"/></a>",$text);
}
else if (preg_match ('#'.$bbcodePtrn.'#', $text, $matches) === 1) {
if(preg_match('/[^а-я]/i',$matches[1])) {$matches[1]=urldecode($matches[1]);}
$text = str_replace($matches[0],"<a href=\"{$matches[1]}\">{$matches[1]}</a>",$text);
}
else if (preg_match ('#'.$bbcodeImg.'#', $text, $matches) === 1) {
$ma = $matches[1];
if(preg_match('/[^а-я]/i',$ma)) $ma=urldecode($ma);
$text = str_replace($matches[0],"<img src=\"{$ma}\"/>",$text);
}
else if (preg_match ('#'.$httpPtrn.'#', $text, $matches) === 1) {
$ma = $matches[0];
if(preg_match('/[^а-я]/i',$ma)) $ma=urldecode($ma);
$text = str_replace($matches[0],"<a href='".$ma."'\">{$ma}</a>",$text);
}
$text=preg_replace("/\[color\=(.+?)\](.+?)\[\/color\]/s", '<span style="color:$1">$2</span>',$text);
$text=preg_replace("/\[size\=(.+?)\](.+?)\[\/size\]/s", '<span style="font-size:$1px;">$2</span>',$text);
$text=preg_replace("/\[code\](.+?)\[\/code\]/s",'<table cellspacing="1" width="100%" border="0"><tr><td>Code:</td></tr><tr><td width="100%" style="background-color:#C7C7C7;border:solid 1px black">$1</td></tr></table>',$text);
$dir= "http://www.tokiohotel-bg.info/img/smiles";//папката в която са картинките
$smiles = array(':)',';)','(O_o)',';(','(chuckle)',':*','(mm)','(ligi)','(inlove)',':D','|-(','(OMG)','(wow)');//текста който е бил в textarea-та
$smileslink = array('smile.png','wink.png','lol.png','cry.png','chuckle.png','cunka.png','mmm.png','ligi.png','inlove.png','xaxa.png','pff.png','omg.png','uuu.png');//въведи съответното име на всяка една картинка
$i = 0;
foreach($smiles AS $sm) {
$text = str_replace($sm,"<img src='$dir/$smileslink[$i]'/>",$text);
$i++;
}
$text = nl2br($text);
$s1s = array('/\[table\]\<br \/\>/s','/\[td\]\<br \/\>/s','/\[\/td\]\<br \/\>/s','/\[tr\]\<br \/\>/s','/\[\/tr\]\<br \/\>/s','/\<li\>\<br \/\>/s','/\<\/li\>\<br \/\>/s','/\<ol\>\<br \/\>/s','/\<ul\>\<br \/\>/s');
$bez = array('[table]','[td]','[/td]','[tr]','[/tr]','<li>','</li>','<ol>','<ul>');
$text = preg_replace($s1s,$bez,$text);
$text=preg_replace("/\[table\](.+?)\[\/table\]/s", '<table border="1" max-width="700">$1</table>',$text);
$text=preg_replace("/\[tr\](.+?)\[\/tr\]/s", '<tr>$1</tr>',$text);
$text=preg_replace("/\[td\](.+?)\[\/td\]/s", '<td>$1</td>',$text);
return stripslashes($text);
}
Не помня точно къде го процакваше.. същата работа и ако е само линка.. Някой знае ли как мога да ги оправя, защото ми трябват много..