BBCode parser + regular epxresions v php

Pepa

BBCode parser + regular epxresions v php
« kdy: 27. 02. 2012, 18:42:26 »
cau,

prevadim instalaci phpbb na staticky stranky a taham prispevky primo z db, na netu sem nasel nekolik bbcode2html parseru, z nich se mi nejvic libil ten co zde pridavam (zkracena verze). Nicmene mam nasledujici problem (bohuzel php skoro vubec neovladam) jak dosahnout regularniho matchu napr pro nize (tedy ignorovat ty veci co tam phpbb vklada vse mezi : a ] napr :15bqzli1)

Kód: [Vybrat]
[img:15bqzli1]http://neco/a.jpg[/img:15bqzli1]
Kód: [Vybrat]
<?php


function bb2html($text)
{
  
$bbcode = array("<"">",
                
"[list]""[*]""[/list]"
                
"[img]""[/img]"
                
"[b]""[/b]"
                
"[u]""[/u]"
                
'"]');
  
$htmlcode = array("&lt;""&gt;",
                
"<ul>""<li>""</ul>"
                
"<img src=\"""\">",
                
"<b>""</b>"
                
"<u>""</u>"
                
'">');
  
$newtext str_replace($bbcode$htmlcode$text);
  
$newtext nl2br($newtext);//second pass
  
return $newtext;
}
?>

dik


Pepa

Re:BBCode parser + regular epxresions v php
« Odpověď #1 kdy: 27. 02. 2012, 19:50:15 »
Tak nakonec sem to nejak doresil pomoci dotazu v sql na 'bbcode_uid' a nasledny odstaneni jeste pred parsovanim bbcodu

Kód: [Vybrat]
$bid = $row['bbcode_uid'];
$text = str_replace(':' . $bid, '', $text);
$text = preg_replace('/\[(\/?)code:\d*\]/', '[\1code]', $text);

nicmene i tak by me zajimala odpoved na puvodni dotaz, jestli to jde i nejak primo.

Lol Phirae

Re:BBCode parser + regular epxresions v php
« Odpověď #2 kdy: 27. 02. 2012, 19:55:55 »
Já ti teda nevím, ale bbcode parser je překvapivě všude, kde se to používá. Tak bych navrhoval třeba stáhnou phpBB a kouknout.  ::)

Pepa

Re:BBCode parser + regular epxresions v php
« Odpověď #3 kdy: 27. 02. 2012, 21:03:31 »
To sem samozrejme udelal, nicmene me to prislo dost komplikovany a sam sem to vyresil k plne spokojenosti asi za hodku, coz bych s tim jejich (ano necekane je provazanej s celym systemem a nejde tak snadno vypreparovat, nedal).

Nicmene bych se rad drzel puvodniho dotazu, ne jak a proc. Taky sem mohl pouzit perl a nebo kdovi co, ze ...