jorgis Skrevet 28. april 2007 Del Skrevet 28. april 2007 (21:23:14) (*) det er galskap å bruke _replace-funksjoner til sånt(21:23:33) (*) regular expressions burde vært forbudt (21:23:47) (*) bruk string-funksjoner til å parse teksten 8487276[/snapback] Så hvordan har du tenkt å mekke en god bbcode-parser uten bruk av regex eller noen form for _replace-funksjoner i det hele tatt? Ring meg når du finner en slik parser. Men er enig med at regexer bør du holde deg unna for å sanitere f.eks. URL'er eller andre steder hvor en kan fort åpne seg for sikkerhetshull. Da bør en heller konsistent bruke htmlspecialchars(), strip_tags() og htmlentities(). Jobber i øyeblikket selv på en post-parser, som en del av Vikingboard-prosjektet. Der skal ikke bare bbcodes enkelt (og trygt) kunne byttes, men det skal også kunne være mulig å endre og legge til egne replace-regler uten å måtte kunne regex. Eksempel på replace-regel: '[url=:url:]:text:[/url]' => '<a href=":url:">:text:</a>' Hvor så parseren senere bytter ut :text: og :url: med rette regex-mønstre, og assigner variabler på høyresiden. Koden ligger her, men husk på at det er work in progress, og langt ifra ferdig enda. Lenke til kommentar
grimjoey Skrevet 29. april 2007 Del Skrevet 29. april 2007 (endret) du lurte på hvordan man hentet ting fra en regexp? alt som defineres innenfor parantes blir matchet for seg selv og kan bli backreferenced eller hentet fra et array. eksempel.. $string = 'tekst[foo:bar]tekst'; #vi vil ha ut foo og bar $pattern = '/[a-z]*\[([a-z]*):[a-z]*][a-z]*/'; $pattern2 = '/[a-z]*\[[a-z]*:([a-z]*)][a-z]*/'; $pattern3 = '/[a-z]*\[([a-z]*):([a-z]*)][a-z]*/'; ereg_match_all($pattern, $string, $matches); print_r($matches); pattern vil returnere et multiarray som inneholder hele matchen samt foo pattern2 vil returnere et multiarray som inneholder hele matchen samt bar pattern3 vil returnere et multiarray som inneholder hele matchen, foo og bar dersom jeg ikke har gjort noen feil da. det som er verdt å merke seg er parantesene. anbefaller et program som heter regex coach. du finner det hvis du leter Endret 29. april 2007 av grimjoey 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å