nree Skrevet 11. oktober 2006 Del Skrevet 11. oktober 2006 (endret) Heisann.. EDIT: Løsning her: https://www.diskusjon.no/index.php?showtopi...dpost&p=7047217 Når man har f.eks:$varabel = str_replace("[i*]","<i>",$varabel); $varabel = str_replace("[/i*]","</i>",$varabel); Hvordan kan man da få til at om man skriver [i*] uten å skrive [/i*] i slutten at [i*] koden ikke funker? (Uten *) Slik som: Skrå tekst Ikke skrå tekst Om koden oppfor nå hadde fungert hadde alt under blitt i skrå tekst, og det er det jeg vil forhindre Noen som kan hjelpe? Endret 11. oktober 2006 av goggen90 Lenke til kommentar
Ernie Skrevet 11. oktober 2006 Del Skrevet 11. oktober 2006 str_replace er nok ikke akkurat det ideelle for BBCode. preg_replace() er nok tingen. Lenke til kommentar
Peter Skrevet 11. oktober 2006 Del Skrevet 11. oktober 2006 Og det du ønsker er en tankelesermaskin, for du kan umulig avgjøre når brukeren ønsker å avslutte en tag, bortsett fra helt på slutten. Lenke til kommentar
nree Skrevet 11. oktober 2006 Forfatter Del Skrevet 11. oktober 2006 Nazgul: Nei, det jeg ønsker er at om brukeren ikke avslutter taggen funker den ikke i det hele tatt... Ernie: Takk, skal se på det.. Lenke til kommentar
Peter Skrevet 11. oktober 2006 Del Skrevet 11. oktober 2006 Da må du lage en rekursiv funksjon som finner ut hvilke(n) tag(er) som ikke matcher og sørge for at det ikke blir gjort noe med denne. Lenke til kommentar
nree Skrevet 11. oktober 2006 Forfatter Del Skrevet 11. oktober 2006 (endret) Ernie: PHP <?php function bbkode ($str) { $bbkoder = array( '/\[b\](.*?)\[\/b\]/is', '/\[i\](.*?)\[\/i\]/is', '/\[u\](.*?)\[\/u\]/is' ); $erstatt = array( '<strong>$1</strong>', '<em>$1</em>', '<u>$1</u>' ); $str = preg_replace ($bbkoder, $erstatt, $str); return $str; } $tekst = "Heisann bold, er du å går på tur med skråtekst eller, er det udertekst jeg ser?"; bbkode ($tekst); echo $tekst; ?> Hmm, funker ikke.. bbkodene blir ikke erstattet.. Nazgul: preg_replace skulle holde i massevis Endret 11. oktober 2006 av goggen90 Lenke til kommentar
Ernie Skrevet 11. oktober 2006 Del Skrevet 11. oktober 2006 Det der fungerer utmerket det, du må bare sette $tekst = bbkode($tekst); Lenke til kommentar
nree Skrevet 11. oktober 2006 Forfatter Del Skrevet 11. oktober 2006 (endret) Aha, det var feilen ja Takk Ernie (Føler jeg lærer mye av deg for tiden ) Legger ut hele funksjonen jeg, i tilfelle noen trenger den PHP <?php function bbkoder ($str) { $bbkoder = array( '/\[b\](.*?)\[\/b\]/is', '/\[i\](.*?)\[\/i\]/is', '/\[u\](.*?)\[\/u\]/is', '/\[p\](.*?)\[\/p\]/is', '/\[img\](.*?)\[\/img\]/is', '/\[url\](.*?)\[\/url\]/is', '/\(.*?)\[\/url\]/is', '/\/is' ); $erstatt = array( '<b>$1</b>', '<i>$1</i>', '<u>$1</u>', '<p>$1</p>', '<img src="$1" class="utskrift" />', '<a href="$1" rel="external">$1</a>', '<a href="$1" rel="extrenal">$2</a>', '<img src="$1" class="utskrift" />' ); $str = preg_replace ($bbkoder, $erstatt, $str); return $str; } ?> = » [p*]Avsnitt[/p*] » [h3*]Overskrift[/h3*] » [b*]Tjukk tekst[/b*] » [i*]Skrå tekst[/i*] » [u*]Underlinje[/u*] » [url*]adresse[/url*] » navn[/url*] » (Bilde) Uten stjerne før ] btw, forumet omgjør alt til "ikkeBB-koder" om jeg ikke legger ved stjernen Brukes slik: PHP $tekst = "Heisann Per"; $tekst = bbkoder($tekst); echo $tekst; evnt. med mysql ol. menmen.. rel="external" og class="utskrift" er jo ting som jeg har lagt til for eget behov.. Må nesten tilpasses den enkelte side Endret 11. oktober 2006 av goggen90 Lenke til kommentar
Gjest Slettet+142 Skrevet 11. oktober 2006 Del Skrevet 11. oktober 2006 Legger ut hele funksjonen jeg, i tilfelle noen trenger den helt riktig takk Lenke til kommentar
Peter Skrevet 11. oktober 2006 Del Skrevet 11. oktober 2006 Har du laget den funksjonen helt selv? Rekursjonen var for å støtte nøstet bbkode, f.eks. farge i farge, men det brukes jo ikke her. Lenke til kommentar
nree Skrevet 11. oktober 2006 Forfatter Del Skrevet 11. oktober 2006 (endret) Laget den utifra et eksempel for preg_replace, så ja.. Aha, men det kan jo legges til i arrayet det og da.. tekst[/color*] blir til <span style="color: #FF0000">tekst</span> Uten stjerne da.. Endret 11. oktober 2006 av goggen90 Lenke til kommentar
Beethoven Skrevet 11. oktober 2006 Del Skrevet 11. oktober 2006 Er jeg jo ikke bare å legge det til da! Her: PHP <?php function bbcodes($str) { $bbkoder = array( '/\[b\](.*?)\[\/b\]/is', '/\[i\](.*?)\[\/i\]/is', '/\[u\](.*?)\[\/u\]/is', '/\[p\](.*?)\[\/p\]/is', '/\[img\](.*?)\[\/img\]/is', '/\[url\](.*?)\[\/url\]/is', '/\(.*?)\[\/url\]/is', '/\/is', '/\(.*?)\[\/color\]/is' ); $erstatt = array( '<b>$1</b>', '<i>$1</i>', '<u>$1</u>', '<p>$1</p>', '<img src="$1" class="utskrift" />', '<a href="$1" rel="external">$1</a>', '<a href="$1" rel="extrenal">$2</a>', '<img src="$1" class="utskrift" />', '<span style="color: $1">$2</span>' ); return preg_replace ($bbkoder, $erstatt, $str); } Lenke til kommentar
nree Skrevet 11. oktober 2006 Forfatter Del Skrevet 11. oktober 2006 Synst de som trengte den kunne få den utfordringen vertfall Beethoven.. ? [url= viser mer en godt nok hvordan det skulle gjøres Lenke til kommentar
Peter Skrevet 11. oktober 2006 Del Skrevet 11. oktober 2006 Det er noe i det å gi kreditt der det hører hjemme. Dette kan f.eks. legges ved som en kommentar i koden. Utifra dine erfaringer og spørsmål, så har jeg litt vanskelig for å tro at du har laget regexen, men men, du vet jo selv best hva som er riktig. Lenke til kommentar
nree Skrevet 12. oktober 2006 Forfatter Del Skrevet 12. oktober 2006 Herregud, da får du vell finne en som er lik da? Du tror at når en person kan lite om mySQL spørringer sammen med php så kan han ikke no mer av andre ting? Lenke til kommentar
Peter Skrevet 12. oktober 2006 Del Skrevet 12. oktober 2006 Noe av det vanskeligste å sette seg inn i er faktisk regex, ettersom man skal tenke rimelig abstrakt. Så da har vi det i bakhodet, samtidig som vi ser på hva Ernie hjalp deg med sist. At du har skrevet deler av koden selv er helt i orden, men du har skrevet av en del fra noen andre, det er jeg 100% sikker på. Det er uansett ikke poenget her. Jeg bare nevnte at det kan være greit å gi cred der det hører hjemme. I dette tilfellet ville jeg muligens brukt "# modified version of xyz by abc" Men meg om det. Lenke til kommentar
olemedkrutt Skrevet 12. oktober 2006 Del Skrevet 12. oktober 2006 (endret) Et tips, sørg for å bare tillat at img src starter med http://, ellers kan det bli farlig Også må man huske på å bruke htmlspecialchars OG addslashes. Endret 12. oktober 2006 av olemedkrutt Lenke til kommentar
nree Skrevet 12. oktober 2006 Forfatter Del Skrevet 12. oktober 2006 Laget den utifra et eksempel for preg_replace, så ja.. 7047550[/snapback] Nazgul: Skal jeg gi kred til manualen? Om du ser hva Ernie skriver lengre oppe linker han til manualen, og om du har sett i manualen før vet du at det er fult av eksempler det http://no.php.net/preg_replace Lenke til kommentar
nree Skrevet 12. oktober 2006 Forfatter Del Skrevet 12. oktober 2006 Et tips, sørg for å bare tillat at img src starter med http://, ellers kan det bli farlig Også må man huske på å bruke htmlspecialchars OG addslashes. 7053536[/snapback] htmlspecialchars er allerede satt inn i samme script, men takk alikevell addslashes, trenger jeg virkelig det? Lenke til kommentar
olemedkrutt Skrevet 12. oktober 2006 Del Skrevet 12. oktober 2006 Jeg er usikker på om du trenger addslahes OGSÅ, det ser ut til at htmlspecialchars tar seg av det nødvendige 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å