jorgis Skrevet 4. mai 2004 Del Skrevet 4. mai 2004 Sett at jeg har følgende reg. expression: #\[kode\](.+?)\[/kode\]#is Hvis jeg vil hente ut hva brukeren skriver mellom [kode] og [/kode], kan jeg skrive \\1. ...men når jeg vil ha det inn i en funksjon, som for eksempel highlight_string(), hva gjør jeg da? Lenke til kommentar
Ueland Skrevet 4. mai 2004 Del Skrevet 4. mai 2004 $data = preg_replace(blalblalba); evvnt, $data=preg_replace("blabla", "highlight_string(//1)", $data); Noe a la det bør gjøre susen vil jeg tro Lenke til kommentar
???????? Skrevet 4. mai 2004 Del Skrevet 4. mai 2004 (* = 0 eller flere tegn) Du kan lagre det i en variabel eller plassere det direkte i funksjonen. Lenke til kommentar
jorgis Skrevet 4. mai 2004 Forfatter Del Skrevet 4. mai 2004 $data=preg_replace("blabla", "highlight_string(//1)", $data); Noe a la det bør gjøre susen vil jeg tro problemet er at det var akkurat det jeg trodde ville funke, men highlight_string tolket \\1 enten som en vanlig streng eller som to deletegn og et ettall, og ikke som en referanse til hva som kommer fra preg_replace. Lenke til kommentar
sven-o Skrevet 4. mai 2004 Del Skrevet 4. mai 2004 (endret) Denne bruker jeg: $str=preg_replace("/(\[kode])(.+)(\[\/kode\])/isUe", "highlight_string('\\2')",$str); Edit: Vet egentlig ikke hvorfor jeg har paranteser rundt [kode] og [/kode]. Du kan alltids prøve koden under, og se om det funker: $str=preg_replace("/\[kode](.+)\[\/kode\)/isUe", "highlight_string('\\1')",$str); Endret 4. mai 2004 av sven-o Lenke til kommentar
jorgis Skrevet 4. mai 2004 Forfatter Del Skrevet 4. mai 2004 Skal prøve den nå. Hva betyr "Ue" etter #is? Lenke til kommentar
sven-o Skrevet 4. mai 2004 Del Skrevet 4. mai 2004 Skal prøve den nå. Hva betyr "Ue" etter #is? U betyr ungreedy. Ettersom greedy er defult ved regulære uttrykk ville dette: [kode]masse kode...[kode] Ikke kode [kode][kode] blitt en stor kodeblokk, istedenfor to små. Altså (.*) spiser opp hele strengen før den slutter på siste [/kode](derav greedy). e gjør så substitusjonen("highlight_string()") skal evalueres som kode. Ellers vil ikke denne funksjonen bli kjørt. Lenke til kommentar
jorgis Skrevet 4. mai 2004 Forfatter Del Skrevet 4. mai 2004 Prøvde litt med det der, men den taklet ikke at jeg blandet PHP og HTML... Dessuten var det ikke syntax highlighting av en eller annen grunn. Lenke til kommentar
sven-o Skrevet 4. mai 2004 Del Skrevet 4. mai 2004 Prøvde litt med det der, men den taklet ikke at jeg blandet PHP og HTML... Dessuten var det ikke syntax highlighting av en eller annen grunn. Pussig. Du kan få hele koden jeg bruker: function replaceCode($str){ $str = preg_replace("/(\[code])(.+)(\[\/code\])/isUe", "highlite('\\2')",$str); return $str; } function highlite($text){ ob_start(); highlight_string(stripslashes($text)); $buffer = ob_get_contents(); ob_end_clean(); return "<div class=\"codebox\">".str_replace("\r","",str_replace("\n","",$buffer))."</div>"; } Lenke til kommentar
jorgis Skrevet 4. mai 2004 Forfatter Del Skrevet 4. mai 2004 Ja, jeg synes det var litt merkelig jeg og, siden jeg har brukt highlight_string mange ganger før på samme server. Alt var slik det skulle være, men alt ble farget svart. Skal teste koden din. Hvorfor bruker du output buffering før/etter highlight_string? Lenke til kommentar
sven-o Skrevet 4. mai 2004 Del Skrevet 4. mai 2004 Hvorfor bruker du output buffering før/etter highlight_string? I eldre versjoner av php(<4.2.0) returnerte ikke highlight_string() en streng, men skrev det direkte til output. Det gjør det fremdeles, dersom du ikke setter andre argument til true. Greit med fleksibilitet. Lenke til kommentar
jorgis Skrevet 4. mai 2004 Forfatter Del Skrevet 4. mai 2004 (endret) Hmmmm... Nå funket det helt fint på en testside, men når jeg satte det inn i noe med litt CSS på, forsvant fargene igjen.... Tror forresten ikke det er CSS sin feil, siden koden som genereres av PHP mangler massevis av <font>-tagger. Endret 4. mai 2004 av jorgenindahouse Lenke til kommentar
sven-o Skrevet 4. mai 2004 Del Skrevet 4. mai 2004 Rart. Eneste jeg vet er at highlight_string() kun vargelegger kode innenfor <??> taggene. Er iallefall ganske sikker på det... Lenke til kommentar
jorgis Skrevet 4. mai 2004 Forfatter Del Skrevet 4. mai 2004 (endret) Pling! Det var det, ja... EDIT: note to self: husk å gjøre bbcode-guffe _etter_ det er satt inn i db... Endret 4. mai 2004 av jorgenindahouse 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å