Gilbert Skrevet 24. juli 2004 Del Skrevet 24. juli 2004 [b ] blabla [/b ] skal bli til blabla (osv bb-code), men trenger seriøst hjelp med dette. Manualen er heller forvirrende på dette punkt . Noen som kan bidra med en enkel regular expression? Lenke til kommentar
jorgis Skrevet 24. juli 2004 Del Skrevet 24. juli 2004 $input = preg_replace("#\[b\](.+?)\[/b\]#", "<b>\\1</b>", $input); Lenke til kommentar
Gilbert Skrevet 24. juli 2004 Forfatter Del Skrevet 24. juli 2004 (endret) strålende... tror jeg: $text = preg_replace("/($hl)/", "<span style=\"background:yellow\">\\1</span>", $innlegg[3]); $text = preg_replace("#\[i\](.+?)\[/i\]#", "<i>\\1</i>", $text); disse to fungerer ikke sammen. $hl = "hei", og $text = "hei hei [i ]hei[/i ]" edit: bbcodes ble jo bbcodes i forumet her Endret 24. juli 2004 av fjartan Lenke til kommentar
jorgis Skrevet 24. juli 2004 Del Skrevet 24. juli 2004 Du må huske på å escape $ med en \ foran i regexpen, og at [ I] ikke er det samme som [ i]. For å gjøre regexpen case insensitive, kan du legge til "i" etter #; $text = preg_replace("#(\$hl)#", "<span style=\"background:yellow\">\\1</span>", $innlegg[3]); $text = preg_replace("#\[I\](.+?)\[/I\]#i", "<i>\\1</i>", $text); Lenke til kommentar
Gilbert Skrevet 24. juli 2004 Forfatter Del Skrevet 24. juli 2004 $text = preg_replace("#(\$hl)#", "<span style=\"background:yellow\">\\1</span>", $innlegg[3]); fungerer ikke under noen omstendigheter... $hl = "hei"; Lenke til kommentar
jorgis Skrevet 25. juli 2004 Del Skrevet 25. juli 2004 $text = preg_replace("#\$hl(.+?);#", "<span style=\"background:yellow\">\\1</span>", $innlegg[3]); Er ikke helt sikker på om du muligens må escape ;, men det går fint å fikse på. Lenke til kommentar
Gilbert Skrevet 25. juli 2004 Forfatter Del Skrevet 25. juli 2004 beklager, dette fungerer dårlig. Istedenfor at jeg skal legge ut kode og de alternativer jeg har forsøkt, er det greit om jeg spør om en kodesnutt til følgende: $text -> sjekke for bbcode -> sjekke for og evt highlighte $hl -> output Det hadde vært fint. Litt kjipt når ting bare funker nesten. Lenke til kommentar
The Red Devil Skrevet 25. juli 2004 Del Skrevet 25. juli 2004 Umm, kva er det du prøver å få til? Koden din: $text = preg_replace("/($hl)/", "<span style=\"background:yellow\">\\1</span>", $innlegg[3]); Er gal etter min meining. Kva er det du prøver å highlighte? Er det $hl, eller text mellom $hl og ein annen kode? Vennlegst forklar litt meir så skal eg se om eg kan skrive ein kode snutt til deg. Lenke til kommentar
Gilbert Skrevet 25. juli 2004 Forfatter Del Skrevet 25. juli 2004 (endret) den siterte kodesnutten ovenfor fikk jeg tidligere her på forumet. Jeg vil gjerne: sjekke bbcode for [i ][/i ] (osv, med preg_replace), og highlighte $hl. I dette tilfellet er $hl = "hei" og $text = "hei hei [i ]hei[/i ]". Da burde alt bli gult + italic den siste "hei". Endret 25. juli 2004 av fjartan Lenke til kommentar
LoS Skrevet 25. juli 2004 Del Skrevet 25. juli 2004 Med mindre jeg misforstår nå, så skal vel dette funke da? $text = preg_replace("#\[I\](.+?)\[/I\]#i", "<span style=\"background:yellow; text-decoration: underline;\">\\1</span>", $text); Eller? Lenke til kommentar
Gilbert Skrevet 26. juli 2004 Forfatter Del Skrevet 26. juli 2004 @LoS : Nesten Gikk litt fort her. Skal prøve å spørre enda enklere: I forumet mitt kan man skrive inn [i ] for å få italic tekst, og hvis man søker etter noe, blir det lagret i variabelen $hl, som vil highlighte nevne tekst. Altså; to forskjellige "pregger", som arbeider uavhengig av hverandre. Problemet med $hl-"preggen" ovenfor, var at den ikke fungerte under noen omstendigheter, og den la til <span></span> rundt alle mellomrom, noe som gjorde at $hl-"preggen" ikke fungerte. Så det ja... Lenke til kommentar
LoS Skrevet 27. juli 2004 Del Skrevet 27. juli 2004 (endret) Nå skjønner jeg, slik som søkefunksjonen i forumet her gjør? edit: ser ut som om lokaltog har en sak der. rart jeg ikke tenkte på det, er forelska i str_replace jo Endret 27. juli 2004 av LoS Lenke til kommentar
Lokaltog Skrevet 27. juli 2004 Del Skrevet 27. juli 2004 Er ikke helt dreven på regexp enda, så forsøker å gi deg en kodesnutt til str_replace isteden: $hl = "string"; // søkestreng? $highlighted = str_replace($hl, "<span class=\"emphasized\">$hl</span>", $data); Lenke til kommentar
Gilbert Skrevet 27. juli 2004 Forfatter Del Skrevet 27. juli 2004 glad for all hjelp problemet med str_replace er at søkestrengen jeg vil understreke vil vise seg også i understrekingen - med samme store/små bokstaver. Lenke til kommentar
joffar Skrevet 27. juli 2004 Del Skrevet 27. juli 2004 Nå har ikke jeg stor greie på ereg?replace i det hele tatt, men skulle ikke dette virke: $text = preg_replace("/($hl)/", "<span style=\"background:yellow\">\\1</span>", $innlegg[3]); $text = preg_replace("#\[i\](.+?)\[/i\]#i", "<emp>\\1</emp>", $text); Har ikke testet det da... Lenke til kommentar
The Red Devil Skrevet 27. juli 2004 Del Skrevet 27. juli 2004 (endret) $variable = eregi_replace("\[i\]([[:print:]]*)\[\/i\]","<i>\\1</i>",$variable); $variable = eregi_replace("($hl)","<span style=\"background:yellow\">\\1</span>",$variable); Den koden vil fungere, joffar sin kode ser ut til å være rett og. Men eg kan ikkje preg_replace ennå så eg kan ikkje sei det sikkert. Edit: Husk å gjør alt med ubb koden før du legger til style spanen rundt søkeorda (eller så kan den ødelegge ubb koden. Endret 27. juli 2004 av The Red Devil Lenke til kommentar
joffar Skrevet 27. juli 2004 Del Skrevet 27. juli 2004 Du må vel også sjekke at rekkefølgen er korrekt... Slik at du ender opp med <span>tekst, tekst, <em>tekst</em></span> i ditt tilfelle vil det ikke være noe problem siden span teksten er større enn i teksten, men i tilfeller der begge bare er ett ord, vil red devils kode føre til : <i><span>tekst</span></i> jeg vet ikke om dette er ett problem mh til validering eller ei, men tror at <span><em>tekst</em></span> er mere korrekt. Lenke til kommentar
The Red Devil Skrevet 27. juli 2004 Del Skrevet 27. juli 2004 (endret) Hmm, ja du har eit poeng der joffar. Og du har rett angående kode validering. Problemet er bare at bb koden blir "ødelagdt" vist du tar den etter span eregi'en vist brukeren søker på feks i,b osv. Løysningen på dette problemet er eg ikkje sikker på, kansje nokre nye regulare expressions eller str_replace som sjekker at syntaxen er rett? Eller, den beste metoden vil være å bruke to str_replace for kvar bb kode og skifte ut den med nokre "tegn" før du kjøre span'en deretter skifte dei tilbake og kjøre bb koden. EDIT: //Skifte ut bb koden $variable = str_replace('[i]','#',$variable); $variable = str_replace('[/i]','/#',$variable); //Merke ut søke orda $variable = eregi_replace("($hl)","<span style=\"background:yellow\">\\1</span>",$variable); //Skifte tilbake bb koden $variable = str_replace('#','[i]',$variable); $variable = str_replace('/#','[/i]',$variable); //Tilslutt kjør bb koden $variable = eregi_replace("\[i\]([[:print:]]*)\[\/i\]","<i>\\1</i>",$variable); Husk å bruke nokre tegn du er sikker på at bruker ikkje vil søke på, eventuelt ikkje gje bruker lov til å søke på dei tegna. Endret 27. juli 2004 av The Red Devil Lenke til kommentar
joffar Skrevet 27. juli 2004 Del Skrevet 27. juli 2004 Ikke for å være vanskelig, men da tor jeg det ville være lettere å nedlegge forbud mot å søke etter enkle ord som er det samme som bbcode... Det spørs jo også litt på hvordan søkemotoren er bygd opp. Dersom søkemotoren fek søker på en hel streng, er det jo relativt lett å forby søk på enkle ord som b, i, qoute osv.. men dersom søkemotoren søker på hvert ord i en streng, som feks google, da blir jo det ett problem her også. en annen ting som kanskje kan gjøres er at dersom en søker etter feks i, sjekker en først om i har haker lik eller at i er frittstående i vs el . Dersom den ikke er frittst[ende blir den ignorert... Men som sagt det kommer litt an på hvordan søkemotoren er.. Lenke til kommentar
The Red Devil Skrevet 27. juli 2004 Del Skrevet 27. juli 2004 joffar: Det ville vært det letteste. Men eg klarer ikkje skrive ein eregi_replace som ikkje godtar [] rundt søkeordet. Vist nokon andre kan hjelpe tekst starter med det så hadde det våre flott. Slik eg ser dette, så skal det være ein søke funksjon på eit newscript eller forum, som markerer ut søketeksten på sidene. 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å