Avatar billede supermand69 Nybegynder
24. oktober 2004 - 17:49 Der er 27 kommentarer og
1 løsning

preg_replace case insensitive

hvordan kan jeg lave case insensitive i min funktion??

function url2link($txt)
{
    $url_match = "[a-z0-9@:\-\.æøå]+(\/[a-z0-9_\-\.\/æøå]+)?(\?[a-z0-9=&%æøå]+)?";
   
    $trans_arr = array(
        "([a-z0-9_\-\.]+@[a-z0-9\-]+\.[a-z0-9]+)" => "<a href='mailto:\\0'>\\0</a>",
        "((ftp|https?):\/\/$url_match)" => "<a href='\\0' target='_blank'>\\0</a>",
        "([^\/\/]www\.$url_match)" => "<a href='http://\\0' target='_blank'>\\0</a>"
    );
   
    return preg_replace(array_keys($trans_arr), array_values($trans_arr), $txt);
}
Avatar billede bojo Nybegynder
24. oktober 2004 - 18:01 #1
Avatar billede supermand69 Nybegynder
24. oktober 2004 - 18:06 #2
øv... får en fejl :(

har lige ændret lidt i min funktion

function url2link($txt)
{
    $domain_match = "[a-z0-9@:\-\.æøå]+";
    $url_match = $domain_match."(\/[a-z0-9_\-\.\/æøå]+)?(\?[a-z0-9=&%æøå]+)?";
   
    $trans_arr = array(
        "([a-z0-9_\-\.]+@$domain_match)/i" => "<a href='mailto:\\0'>\\0</a>",
        "((ftp|https?):\/\/$url_match)/i" => "<a href='\\0' target='_blank'>\\0</a>",
        "([^\/\/]www\.$url_match)/i" => "<a href='http://\\0' target='_blank'>\\0</a>"
    );
   
    return preg_replace(array_keys($trans_arr), array_values($trans_arr), $txt);
}
Avatar billede supermand69 Nybegynder
24. oktober 2004 - 18:07 #3
Warning: Unknown modifier '/' in s:\http\_www\avansis.dk\_clark\test\url2link2.php on line 13

Warning: Unknown modifier '/' in s:\http\_www\avansis.dk\_clark\test\url2link2.php on line 13

Warning: Unknown modifier '/' in s:\http\_www\avansis.dk\_clark\test\url2link2.php on line 13
Avatar billede bojo Nybegynder
24. oktober 2004 - 18:18 #4
hmmmmm - måske fordi du ikke har dine udtryk mellem / / jeg ved ikke lige hvad det hedder at gøre det

dette virker: echo preg_replace("/test/i", "Test", "test Test");
Avatar billede supermand69 Nybegynder
24. oktober 2004 - 19:01 #5
tak.. det virker :)

lav et svar
Avatar billede bojo Nybegynder
24. oktober 2004 - 19:09 #6
tag du det selv
Avatar billede supermand69 Nybegynder
24. oktober 2004 - 19:14 #7
takker
Avatar billede supermand69 Nybegynder
24. oktober 2004 - 19:59 #8
jeg har lige opdaget en fejl...

hvis www.test.dk er i starten af en string laver den den ikke om til et link?
Avatar billede supermand69 Nybegynder
24. oktober 2004 - 20:01 #9
og hvis man laver ftp://en:test@noget.dk bliver ftp://en: et link og resten bliver til en mailto
Avatar billede bojo Nybegynder
24. oktober 2004 - 20:04 #10
tjaaa - så er der ged i din RegEx

Du siger jo også [a-z0-9_\-\.]+ efterfulgt af @ er en mailto
Avatar billede supermand69 Nybegynder
24. oktober 2004 - 20:12 #11
jeg startede først på reg igår så er knap så heldig i det jeg laver... hehe

ehm... hvordan kan det laves så det funker? ;)
Avatar billede bojo Nybegynder
24. oktober 2004 - 20:19 #12
jeg er også ny i regex - ret fed men forvirrende funktion og du har rodet dig ind i noget af det mest indviklede nemlig at parse en url, du skulle måske kigge på http://dk2.php.net/manual/da/function.parse-url.php
Avatar billede supermand69 Nybegynder
24. oktober 2004 - 20:37 #13
jeg kan ikke helt se hvordan jeg kan bruge den funktion? jeg skal jo stadig finde url'en i min string?
Avatar billede supermand69 Nybegynder
24. oktober 2004 - 20:41 #14
jeg synes da ellers selv jeg er kommet tæt på en rimelig driftsikker funktion ;)

der er kun et par småting som skal rettes... jeg kender desværre ikke til ret mange syntaxer :(
Avatar billede bojo Nybegynder
24. oktober 2004 - 20:42 #15
dit funktionsnavn "url2link" gav mig den opfattelse at det var en url du sendte med og dit regex bestyrker den opfattelse, men pyt nu.

Hvad sender du ( i klar tekst ) til  "url2link" og hvad forventer du retur ?
Avatar billede supermand69 Nybegynder
24. oktober 2004 - 20:48 #16
Avatar billede supermand69 Nybegynder
24. oktober 2004 - 22:05 #17
kunne du hjælpe? :)
Avatar billede bojo Nybegynder
24. oktober 2004 - 22:08 #18
det ser da ud til at køre
Avatar billede supermand69 Nybegynder
24. oktober 2004 - 22:11 #19
ikke helt? i min ftp string laver den en mailto :(
Avatar billede supermand69 Nybegynder
24. oktober 2004 - 22:12 #20
jeg har lige en ting mere...

hvis der er en tekst string som ser således ud skal den også kunne lave et link

hahahawww.noget.dk
hehehehttp://noget.dk
Avatar billede supermand69 Nybegynder
24. oktober 2004 - 22:13 #21
LOL... her på eksperten kan den heller ikke med www. når det er i et langt ord... :)
Avatar billede bojo Nybegynder
24. oktober 2004 - 22:25 #22
sært nok da hahahawww.noget.dk er et lovligt link
Avatar billede supermand69 Nybegynder
24. oktober 2004 - 22:34 #23
http://clark.avansis.dk/test/url2link.php

hvordan kan man gøre sådan at den på min ikke taget a'et med i linket?
Avatar billede supermand69 Nybegynder
24. oktober 2004 - 22:40 #24
jeg skal nemlig bruge den i noget javascripts, så hvis jeg har et link uden protokol (www.noget.dk) står forest i stringen kommer start tag'et i mit link ikke med...
Avatar billede supermand69 Nybegynder
25. oktober 2004 - 12:15 #25
hvordan kan man definere kanten af et ord?
Avatar billede bojo Nybegynder
25. oktober 2004 - 15:30 #26
her "([^\/\/]www siger du ikke // efterfulgt af www og dermed er awww jo ok

måske skal du bare fjerne "ikke //" så den kun svarer på www
Avatar billede supermand69 Nybegynder
25. oktober 2004 - 16:14 #27
jamen hvis jeg undlader [^\/\/] replacer den jo også de links der er lavet med http:// :(

hvordan kan man definere starten eller kanten af et ord, så man bliver fri for at lave [^\/\/] ??

hvis du ser i den øverste linje her http://clark.avansis.dk/test/url2link.php, kan du se at den tager et mellemrum med i linket...
Avatar billede bojo Nybegynder
25. oktober 2004 - 18:08 #28
du kan ikke angive starten på et ord, midt i et ord, men ellers er det med \s, den tager nl, tab, blank ......

se http://dk2.php.net/manual/da/reference.pcre.pattern.syntax.php
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester