Parsiranje BB kodova, ali bez nl2br za neke tagove

  • 9 odgovora
  • 3.135 pregleda
Parsiranje BB kodova, ali bez nl2br za neke tagove 22.04.2008. u 12:57 · pre 225 meseci #1
Pozdrav,

Pokusavam da uradim parsiranje jednostavnih bb kodova. Primer:

Code:

$patterns[] = "|\[b\](.*?)\[/b\]|s";
$replaces[] = "<strong>$1</strong>";
return nl2br(preg_replace($patterns, $replaces, $text));


Kao sto se moze videti ja tekst zatim obradim uz pomoc nl2br funkcije koja dodaje "br" tagove na mestima gde ide novi red.

Sve je u redu do tacke kada je potrebno parsirati "code" tag. Potrebno mi je da nl2br funkcija ne utice na taj tag nebi li mi kod osta ne-formatiran uz pomoc "pre" html tagova.

Kako ovo mogu da uradim.

Mucim se vec neko vreme, ali nista.
Re: Parsiranje BB kodova, ali bez nl2br za neke tagove 22.04.2008. u 18:20 · pre 225 meseci #3
Nazalost nije mi pomoglo.

U ovom trenutku znacilo bi mi i kako da "obradim" odredjeni string/karakter izmedju 2 taga. Makar da zamenim slovo x izmedju dva slova y
Re: Parsiranje BB kodova, ali bez nl2br za neke tagove 22.04.2008. u 18:32 · pre 225 meseci #4
ma radi ručno... imaš for petlju ako se naleti na navedeni tag ili što pomoćnu varijablu7 stavi na 1 a ako je pomoćna varijabla na 1 ne mjenjaš \n sa <br /> ako je 0 mjenjaš...
Potpis
there's no place like 127.0.0.1
Re: Parsiranje BB kodova, ali bez nl2br za neke tagove 22.04.2008. u 19:07 · pre 225 meseci #5
Zelim da probam bas sa reg expr.

Evo da probam sa necim jako prostim. Izvinjavam se unapred, vise ni u sta nisam siguran :(

Code:
echo preg_replace('|<pre>[beli]</pre>|', 'crni', 'beli mrav i <pre> jedan beli slon </pre>');


Imamo dakle ovu recenicu gde bih zeleo da "beli" pored slona zamenim u "crni", dakle izmedju 2 "pre" taga.

Nadam se da je ovo sustina svega.
Re: Parsiranje BB kodova, ali bez nl2br za neke tagove 22.04.2008. u 19:57 · pre 225 meseci #6
Sto se tice tvog poslednjeg primera ovo bi trebalo da zavrsi poso
Code:
echo preg_replace('/<pre>(.*?)beli(.*?)<\/pre>/si', '<pre>${1}CRNI${2}</pre>', 'beli mrav i <pre> jedan beli slon </pre>');
Re: Parsiranje BB kodova, ali bez nl2br za neke tagove 22.04.2008. u 20:13 · pre 225 meseci #7
Hvala na odgovoru,

Nikad nisam bio blizi resenju. Problem mi je samo sto broj ovih reci "beli" izmedju tagova "pre" nije fiksno samo 1 vec ih moze biti vise (tj. to zavisi od korisnika).

Moze li se to resiti.
Re: Parsiranje BB kodova, ali bez nl2br za neke tagove 22.04.2008. u 21:05 · pre 225 meseci #8
Moze i to. Nesto mi je stao mozak za resenje preko regularnog izraza (ipak nije to lako) ali moze ovako:
Code:

function myReplace($matches) {
    return str_replace('beli', 'CRNI', $matches[0]);
}
echo preg_replace_callback('/<pre>(.*?)beli(.*?)<\/pre>/si', 'myReplace', 'beli mrav i <pre> jedan beli slon i beli medved </pre>');


Pogledaj obavezno Regular Expressions od Oreilly-ja (postoji i dzepno izdanje) ako zelis da razumes regularne izraze.
Re: Parsiranje BB kodova, ali bez nl2br za neke tagove 22.04.2008. u 21:38 · pre 225 meseci #9
Hvala ti najlepse proradilo je, ali imam jedan mali problem a vec polako gubim moc razmisljanja

Evo koda koji koristim:

Code:

<?php

$input = '
ovo
je primer
u
vise

redova

<pre>
var
    beli: Integer;
begin
    beli:= 10;
end;
</pre>';

function myReplace($matches) {
    return str_replace("beli", "crni", $matches[0]);
}
echo preg_replace_callback('/<pre>(.*?)beli(.*?)<\/pre>/im', 'myReplace', $input);

?>


Skoro je isti kao prethodni primer, ali je tekst u vise linija. Ok je to, postavio sam mu /im flag ali zasto opet ne radi, tj. ovaj pascal kod promenjivu beli nece opet da prebaci u crni.

Ako imas neku ideju sta sa ovim spasao si mi dan. Vec se od jutros mucim sa ovim, a zapeo sam da uradim preko regularnih izraza.

Pozdrav i hvala za sve
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme