Avatar billede SimonBStoevring Nybegynder
18. maj 2010 - 15:43 Der er 4 kommentarer og
1 løsning

Udskift URL med funktion

Hej Eksperter.

Jeg har et problem - givetvis med en simpel løsning, men jeg kan ikke lige finde ud af det.

Jeg ønsker at forkorte nogle adresser i en tekst. Til dette har jeg valgt at bruge siden http://is.gd/ og jeg har en funktion, som gør dette. Jeg har så tænkt mig at benytte preg_replace() til at udskifte alle hjemmesideadresser med en kortere adresse.

Koden ser således ud:

function get_isgd_url($url) { 
    $ch = curl_init(); 
    $timeout = 5; 

    curl_setopt($ch,CURLOPT_URL,'http://is.gd/api.php?longurl='.$url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
    $content = curl_exec($ch); 
    curl_close($ch);

    return $content; 
}

$string = "This is some text with a URL http://youtube.com/";

echo preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', get_isgd_url('$1'), $string);

Jeg ved bare ikke, hvordan jeg får preg_replace() til at køre get_isgd_url() på $1. Som det er nu, kører den naturligvis get_isgd_url() på selve teksten $1 - og ikke på dennes værdi.

Kan nogen hjælpe mig?
Avatar billede dkfire Nybegynder
18. maj 2010 - 15:48 #1
Har du prøvet at fjerne ' rundt om $1 ?
Avatar billede zynzz Praktikant
18. maj 2010 - 16:08 #2
Avatar billede SimonBStoevring Nybegynder
18. maj 2010 - 18:24 #3
#1 dkfire, ja, det giver en fejl.

#2 zynzz, det er præcis, hvad jeg manglede! Mange tak! Vil du lægge et svar? :-)
Avatar billede coderdk Praktikant
19. maj 2010 - 16:43 #4
Du manglede bare tre tegn i din egen ;):

echo preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@e', "get_isgd_url('$1')", $string);

e-modifieren evaluerer replacestrengen som PHP ;)
Avatar billede SimonBStoevring Nybegynder
05. oktober 2010 - 19:10 #5
zynzz har ikke lagt et svar og jeg lukker derfor nu.
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