banansplitt™ Skrevet 28. juni 2010 Del Skrevet 28. juni 2010 (endret) 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 28. juni 2010 av Points Lenke til kommentar
slacky Skrevet 29. juni 2010 Del Skrevet 29. juni 2010 (endret) 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 29. juni 2010 av slacky Lenke til kommentar
banansplitt™ Skrevet 29. juni 2010 Forfatter Del Skrevet 29. juni 2010 (endret) 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 29. juni 2010 av Points Lenke til kommentar
FraXinuS Skrevet 29. juni 2010 Del Skrevet 29. juni 2010 Sjekk regexpene dine. Du søker etter [/img], men den første taggen din er . Da sier det seg vel selv hva som er feil. Lenke til kommentar
slacky Skrevet 29. juni 2010 Del Skrevet 29. juni 2010 (endret) 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 29. juni 2010 av slacky Lenke til kommentar
banansplitt™ Skrevet 29. juni 2010 Forfatter Del Skrevet 29. juni 2010 Sjekk regexpene dine. Du søker etter [/img], men den første taggen din er . Da sier det seg vel selv hva som er feil. Nei? Jeg søker etter [img=...][/img] også. Lenke til kommentar
banansplitt™ Skrevet 29. juni 2010 Forfatter Del Skrevet 29. juni 2010 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
slacky Skrevet 29. juni 2010 Del Skrevet 29. juni 2010 (endret) 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) Hent fra denne siden: http://85.221.118.26/trooper/test.php //EDIT1: Selvfølgelig har jeg glemt å legge inn bbcode for [/img] //EDIT2: Ferdig! Da skal det fungere slik du vil, og være sikkert fra "hackerZ".. Endret 29. juni 2010 av slacky Lenke til kommentar
FraXinuS Skrevet 30. juni 2010 Del Skrevet 30. juni 2010 (endret) Sjekk regexpene dine. Du søker etter ), men den første taggen din har ikke noe end tag. Derfor vil den å videre til neste linje og ta med seg begge taggene i same søket. Endret 30. juni 2010 av FraXinuS Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå