13. marts 2005 - 00:32
Der er
23 kommentarer og 2 løsninger
Regular expressions
Jeg har et textarea, som man skal kunne skrive
Eksperten.dk og så laver en str_replace eller preg_replace det om til <a href="
http://www.eksperten.dk">Eksperten.dk</a> P.S. emnet har jeg ikke selv fundet på! ;o)
Annonceindlæg fra Admin By Request
13. marts 2005 - 09:42
#1
Prøv: $str = preg_replace("/(\[url=)([^\]]+)(\])([^\[]+)(\[\/url\])/", "<a href=\"$2\">$4</a>", $str);
13. marts 2005 - 09:54
#2
Eller: $str = preg_replace("/\[url=(.*?)\](.*?)[\/url\]/si", "<a href=\"$1\">$2</a>", $str);
13. marts 2005 - 10:02
#3
Ellers prøv at find programmet RegexBuddy, så bliver du mere eller mindre selv i stand til at lave dine regexp's fremover, super godt program!
http://www.regexbuddy.com/
13. marts 2005 - 12:07
#4
Det er skidt det koster penge :P
13. marts 2005 - 12:12
#5
Men detox, der er noget jeg ikke forstår en brik af: $2 og $4, hvor angives disse? :S
13. marts 2005 - 12:18
#6
Synes det var mest rimeligt! Tusind Tusind tak for hjælpen!!!!
13. marts 2005 - 12:18
#7
$1 = (\[url=) $2 = ([^\]]+) $3 = (\]) $4 = ([^\[]+) $5 = (\[\/url\])
13. marts 2005 - 12:52
#8
$n skrives ofte som \\n også ;)
13. marts 2005 - 13:11
#9
Er der stadig nogle der gider svare? .. Hvis jeg nu skal lave det sådan at den skal tjekke den samme variabel for mange ting, hvad gør jeg så ?
13. marts 2005 - 13:12
#10
Og hvis det nu var, så ville detox kunne "optimeres" til: $str = preg_replace("/\[url=([^\]]+)\]([^\[]+)\[\/url\]/", "<a href=\"$1\">$2</a>", $str); Der er ikke nogen grund til at bruge capture-klasser til noget som vi ikke skal bruge efterfølgende.
13. marts 2005 - 13:13
#11
Cronaldo, den må du lige uddybe en smule? Evt med et eksempel?
13. marts 2005 - 13:15
#12
ja, altså preg_replace skal BÅDE bruges til at tjekke om der er skrevet
Blabla OG [img src=blabla.gif] .. hvis det er skal det erstattes med henholdsvis <a href="blabla">Blabla</a> og <img src="blabla">
13. marts 2005 - 13:35
#13
Jokbdo, eller en anden? .. Kan I ikke svare!?
13. marts 2005 - 13:37
#14
Jakobdo* :) I skal nok få point i en anden tråd!!!!!
13. marts 2005 - 13:39
#15
Jeg tror jeg ville gøre det ved at kalde preg_replace 2 gange! (er ikke skarp nok til at kunne sige om det kan gøres i en, men tror det ikke)
13. marts 2005 - 13:40
#16
En anden ting, at kalde preg_replace 2 gange, er ikke det din side komme til at blive langsom af... Så kald den 2, eller flere... Ikke noget brugeren bemærker som sådan!
13. marts 2005 - 13:46
#17
jakobdo, det er mere det der skal stå inden i den, fordi med [img=blabla.gif] skal jeg jo ikke afslutte .. skal du ikke med en <img> jo !
13. marts 2005 - 13:51
#18
$nytekst = preg_replace('/\\[img=([a-z0-9\\._-]*)\\]/', '<img src="$1">', $tekst);
13. marts 2005 - 13:53
#19
$indhold = $get['indhold']; $indhold2 = preg_replace("/(\[url=)([^\]]+)(\])([^\[]+)(\[\/url\])/", "<a href=\"$2\">$4</a>", $indhold); $indhold3 = preg_replace('/\\[img=([a-z0-9\\._-]*)\\]/', '<img src=\"$1\">', $indhold2); << det der virker ikke
13. marts 2005 - 15:10
#20
jakobdo!?
13. marts 2005 - 16:07
#21
Hvad virker ikke? Prøv at echo $indhold2 og 3 og se hvad output er!
13. marts 2005 - 19:03
#22
$replace = array( "/\[url=(.*?)\](.*?)[\/url\]/si" => "<a href=\"$1\">$2</a>" ,"/\[img=(.*?)\]/si" => "<img src=\"$1\" alt=\"\">$2</a>" ); $str = preg_replace( array_keys( $replace ), array_values( $replace ), $str );
13. marts 2005 - 19:03
#23
Hurra for copy/paste, det skulle have været: $replace = array( "/\[url=(.*?)\](.*?)[\/url\]/si" => "<a href=\"$1\">$2</a>" ,"/\[img=(.*?)\]/si" => "<img src=\"$1\" alt=\"\">" ); $str = preg_replace( array_keys( $replace ), array_values( $replace ), $str ); :)
13. marts 2005 - 20:32
#24
Warning: Compilation failed: missing terminating ] for character class at offset 26 in /usr/home/mahunidk/domains/mahuni.dk/public_html/fmc/ec/index.php on line 142 << giver denne fejl, altså den sidste ..
13. marts 2005 - 20:41
#25
Oh, den manglede en \: $replace = array( "/\[url=(.*?)\](.*?)\[\/url\]/si" => "<a href=\"$1\">$2</a>" ,"/\[img=(.*?)\]/si" => "<img src=\"$1\" alt=\"\">" ); $str = preg_replace( array_keys( $replace ), array_values( $replace ), $str );
Vi tilbyder markedets bedste kurser inden for webudvikling