Gå til innhold

Problemer med replacing (BB-kodefunksjon)


Anbefalte innlegg

Sliter enormt med et problem her. Jeg har ren tekst som hentes fra databasen som inneholder bb-koder. Det jeg gjør aller først er å gjøre alle til avsnitt, dvs hver gang den finner dobbel linjeskift, om til <p>***tekst***</p>. Det store problemet jeg har er når bildene i bb-kode skal gjøres om til HTML. Hele greia krøller seg til.

 

Her er teksten som er i databasen:

[img=lala.jpg]

[img=lala.jpg]Bildetekst[/img]

[img=lala.jpg]

[img=lala.jpg]Bildetekst[/img]

 

 

Her blir det omgjort til paragrafer, alt funker fint hittil:

<p>[img=lala.jpg]</p>
<p>[img=lala.jpg]Bildetekst[/img]</p>
<p>[img=lala.jpg]</p>
<p>[img=lala.jpg]Bildetekst[/img]</p>

 

 

Her skal det omgjøres til riktig HTML:

$replace = array	(	
'/\<p\>\[img\](.+?)\[\/img\]\<\/p\>/is',
'/\<p\>\[img\=(.+?)\](.+?)\[\/img\]\<\/p\>/is',
);

$replacements = array	(	
'<p class="img"><img src="/public/files/art/uploads/$1"></p>',
'<p class="img"><img src="/public/files/art/uploads/$1" alt="$2">$2</p>',
);

 

 

Og dette er resultatet (bare kaos). Som man ser så kommer det plutselig en </p> etter alt=":

<p class="img"><img src="/public/files/art/uploads/lala.jpg" alt="</p>
<p>[img=lala.jpg]Bildetekst"></p><p>[img=lala.jpg]Bildetekst</p>
<p class="img"><img src="/public/files/art/uploads/lala.jpg" alt="</p>
<p>[img=lala.jpg]Bildetekst"></p>

 

 

 

 

 

Hvor i all verden skjer feilen her?

Endret av Points
Lenke til kommentar
Videoannonse
Annonse

Nå har ikke jeg kikket så nøye på koden din, men jeg ville heller brukt en function for å legge opp bbkoder.

 

function bbcode($text) {

$text = preg_replace("#\[img\]((http|ftp|https|ftps)://)(.*?)(\.(jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG))\[/img\]#sie","'<p><img src=\'\\1'.str_replace(array('.php','?','&','='),'','\\3').'\\4\' style=\'border:0px\'></p>'",$text);

return $text;
}

Kan ikke garrantere at denne fungerer. Men, kan ikke tro annet.

 

Nå henter du bare det du skal hente fra database f. eks slik:

bbcode($data['din_tabell']);

Endret av slacky
Lenke til kommentar

Koden tar ikke for seg paragrafene og gir også feilmelding. :)

 

Men jeg har funnet ut av hva problemet er. Problemet er når samme type "objekt" kommer etter hverandre, f.eks. et bilde, da river replacern med seg begge 2. Den ser det som at alt mellom starttagen

[img]

til det første bildet, og sluttagen

[/img]

til det siste bildet liksom er "ett" objekt.

 

Den slår på en måte sammen objektene. Hvordan løser jeg det?

Endret av Points
Lenke til kommentar

Problemet med at koden min ikke fungerer for deg, kommer simpelthen av at den blir nedbrøte når jeg poster den her.. Du må sette linjen "$text =" til å bare være på en linje.

 

Var dog et problem, men en kjapp fix, nå fører jeg in <p> også:

 

$text = preg_replace("#\[img\]((http|ftp|https|ftps)://)(.*?)(\.(jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG))\[/img\]#sie","'<p><img src=\'\\1'.str_replace(array('.php','?','&','='),'','\\3').'\\4\' style=\'border:0px\'></p>'",$text);

Endret av slacky
Lenke til kommentar

Problemet med at koden min ikke fungerer for deg, kommer simpelthen av at den blir nedbrøte når jeg poster den her.. Du må sette linjen "$text =" til å bare være på en linje.

 

Var dog et problem, men en kjapp fix, nå fører jeg in <p> også:

 

$text = preg_replace("#\[img\]((http|ftp|https|ftps)://)(.*?)(\.(jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG))\[/img\]#sie","'<p><img src=\'\\1'.str_replace(array('.php','?','&','='),'','\\3').'\\4\' style=\'border:0px\'></p>'",$text);

Gir ingen resultater her. BB-kodene står uberørte.

Lenke til kommentar

Fungerer fint her... Tenker problemet ligger i at du copy paster den koden, som da blir litt demontert når jeg poster.. (fungerer ikke for meg heller etter copy/paste) :p

 

Hent fra denne siden: http://85.221.118.26/trooper/test.php

 

//EDIT1: Selvfølgelig har jeg glemt å legge inn bbcode for xx.gif[/img]

 

 

//EDIT2: Ferdig! Da skal det fungere slik du vil, og være sikkert fra "hackerZ".. :p

Endret av slacky
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...