Gjest Skrevet 16. mai 2009 Del Skrevet 16. mai 2009 Hei! Jeg trenger litt hjelp. Jeg skal bruke str_replace fra PHP for å bytte ut URL'en brukeren skriver inn med HTML koden: <a href=""> </a> Men jeg har lyst til å ha det slik det som skal bytte ut: [URL="min-url.com"]custom tekst[/URL] som blir til: <a href="min-url.com">custom tekst</a> Hvordan kan jeg gjøre dette? Jeg replacer tekst fra en array =P Lenke til kommentar
Ernie Skrevet 16. mai 2009 Del Skrevet 16. mai 2009 Regexp passer jo fint til det. Da kan man godta [URL]http://google.com[/URL] og [URL="http://google.com"]google.com[/URL] i samme slengen function parseurl($data, $option) { //Av en eller annen latterlig grunn så gjør e-modifer at " blir til \" $data = str_replace('\"', '"', $data); $option = str_replace('\"', '"', $option); $url = (empty($option)) ? $data : $option; return '<a href="'.$url.'">'.$data.'</a>'; } $tekst = preg_replace('#\[url(=(.*))?\](.*)\[/url\]#ise', 'parseurl(\'$3\', \'$2\')', $tekst); Hvis du vil kreve "" rundt URLen som option bytter du ut (=(.*))? med (="(.*)")? Lenke til kommentar
AlecTBM Skrevet 17. mai 2009 Del Skrevet 17. mai 2009 Gå på google og søk på "php bbcode script" Lenke til kommentar
Martin A. Skrevet 19. mai 2009 Del Skrevet 19. mai 2009 Hva var galt med Ernies forslag? Er ikke så forferdelig mange måter å løse dette på. Om du bruker str_replace til slikt, så kan du faktisk ende opp med å ødelegge designet på siden din. Med mindre man bruker strpos/strstr/preg_match for å kontrollere at antall åpningstagger stemmer med antall sluttagger, men det krever antageligvis med kode og mer ressurser enn preg_replace. Lenke til kommentar
Ernie Skrevet 19. mai 2009 Del Skrevet 19. mai 2009 For ikke å snakke om at det er nærmest klin umulig å få det til med bare str_replace uannsett. "] eller ] kan være en del av en URL, Email, IMG, Quote, List, Color, Size osv. hvilket gjør det umulig å vite hva man skal endre det til med str_replace, og det er før man i det heltatt begynner å snakke om at URL-en i en [url]http://www.google.com[/url] skal settes inn to steder i tilsvarende HTML. Lenke til kommentar
Gjest Skrevet 19. mai 2009 Del Skrevet 19. mai 2009 Hvordan kan jeg få til dette med regex? Lenke til kommentar
Thomas. Skrevet 19. mai 2009 Del Skrevet 19. mai 2009 (endret) Hvordan kan jeg få til dette med regex? $urltest = "[URL=http://google.com]google.com[/URL]"; function parseurl($data, $option) { //Av en eller annen latterlig grunn så gjør e-modifer at " blir til \" $data = str_replace('\"', '"', $data); $option = str_replace('\"', '"', $option); $url = (empty($option)) ? $data : $option; return '<a href="'.$url.'">'.$data.'</a>'; } $urltest = preg_replace('#\[url(=(.*))?\](.*)\[/url\]#ise', 'parseurl(\'$3\', \'$2\')', $urltest); echo $urltest; utestet Endret 19. mai 2009 av Thomas. Lenke til kommentar
Gjest Skrevet 20. mai 2009 Del Skrevet 20. mai 2009 Takk for svar, men hvordan kan jeg dytte dette inn i et gjestebok script som henter vær eneste kommentar fra en MySQL row kalt "v_comment" ? 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å