Jump to content
php.lv forumi

Bbcode


kristao

Recommended Posts

  • 2 years later...

Es lietoju šādu:

__________________________________________________________

<?php

function bbcode($string)

{

$string = preg_replace("#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $string); //boldeets

$string = preg_replace("#\[i\](.+?)\[/i\]#is", "<i>\\1</i>", $string); //sliips

$string = preg_replace("#\[u\](.+?)\[/u\]#is", "<u>\\1</u>", $string); //pasviitrots

#links ar link

//links bez teksta

$string = preg_replace("#\[link\]www\.(.+?)\[/link\]#is", "<a href=\"http://www.\\1\">www.\\1</a>", $string);

$string = preg_replace("#\[link\](.+?)\[/link\]#is", "<a href=\"\\1\">\\1</a>", $string);

$string = preg_replace("#\[link=(.+?)\](.+?)\[/link\]#is", "<a href=\"\\1\">\\2</a>", $string); //links ar tekstu

#tas pats ar url

$string = preg_replace("#\[url\]www\.(.+?)\[/url\]#is", "<a href=\"http://www.\\1\">www.\\1</a>", $string);

$string = preg_replace("#\[url\](.+?)\[/url\]#is", "<a href=\"\\1\">\\1</a>", $string);

$string = preg_replace("#\(.+?)\[/url\]#is", "<a href=\"\\1\">\\2</a>", $string);

#atteels

$string = preg_replace("#\[img\](.+?)\[/img\]#is", "<img src=\"\\1\" alt=\"\" style=\"margin: 4px 0px 4px 0px\" />", $string);

//vienkarshi atteels

$string = preg_replace("#\[img-l\](.+?)\[/img\]#is", "<img src=\"\\1\" alt=\"\" style=\"float: left; margin: 0px 4px 0px 0px\" />", $string); //atteels pa kreisi

$string = preg_replace("#\[img-r\](.+?)\[/img\]#is", "<img src=\"\\1\" alt=\"\" style=\"float: right; margin: 0px 0px 4px 4px\" />", $string); //atteels pa labi

return $string;

}

?>

Edited by jogin
Link to comment
Share on other sites

ja ir citāts ieksh citāta, tad nederēs repleisot sākumu ar pirmām beigām. vajadzēs veidot kaut ko kā koku no nodēm (bbdagiem ar textu starp tām) - līdzīgi kā xmlu parsēt. pēc tam no koka taisīt formatētu htmlu.

 

piem šitāds

[q]viens
 [q]
divi
[q]pedejais[/q]
 [/q]
[/q]

ar repleisošanu par pirmo quoti paņems šitādu gabalu:

[q]viens
 [q]
divi
[q]pedejais[/q]

 

edit: lai gan, ja repleiso otro un trešo reizi (t.i. kamēr ir [q] bbcods) un visi aizverošie [/q] htmlā ir vienādi, tad html tagi tiks salikti pareizās vietās.

Edited by v3rb0
Link to comment
Share on other sites

Nu ja prosta vajag tikai aizstāt bbkodu ar kādu html tagu (div piemēram), tad jau gan nekādu koku nevjag taisīt. Bet gan ar parastu str_replace [q] => <div class=".."> un [/q] => </div> pietikt var. Tik vēl par validitāti jāpiedomā..

Link to comment
Share on other sites

×
×
  • Create New...