23. august 2004 - 17:13
Der er
5 kommentarer
Køre nl2br() på del af tekst
Jeg har en streng, $str. På denne skal der køres funktionen nl2br() på hele teksten UNDTAGEN de dele af teksten som er pakket ind i [html] og [/html] altså et eks: Tekst her bla bla bla bla bla :D [html]og lidt html <br>[/html] Lidt mere tekst :D Vil altså komme til at se noget i nærheden af således ud: nl2br(Tekst her bla bla bla bla bla :D) [html]og lidt html <br>[/html] nl2br(Lidt mere tekst :D) Hvis I forstår hvad jeg mener? ;)
Annonceindlæg fra SuperOffice
exp
Juniormester
23. august 2004 - 18:56
#1
Tror det nemmeste vil være at splitte strengen op i 3 dele, fx vha. reg.exp, og så køre nl2br på de strenge, der ikke indeholder htmlkodes
24. august 2004 - 11:56
#5
hehe enig dennis, her er en anden løsning - Jeg elsker PCRE ;) <?php $txt = <<<STOP dette er en text dette er også en test! [html]dette er html, eller noget :P[/html] dette er en text dette er også en test! STOP; $split = preg_split( "/(\[html\].*?\[\/html\])/si", $txt, -1, PREG_SPLIT_DELIM_CAPTURE ); $n = count( $split ); for( $i = 0; $i < $n; $i++ ) { if ( !preg_match( "/^\[html\].*?\[\/html\]$/si", $split[ $i ] ) ) { $split[ $i ] = nl2br( $split[ $i ] ); } } $nytxt = implode( '', $split ); echo "<b>Original</b><br /><pre>"; echo htmlentities( $txt ); echo "</pre><b>Ny text</b><br /><pre>"; echo htmlentities( $nytxt ); echo "</pre>"; ?>