Avatar billede chrille_the_mat Nybegynder
02. august 2007 - 14:15 Der er 10 kommentarer

Smide alle URL's i et array

Jeg har en tekst:
$string = "Og på denne side kan du finde mange gode links www.google.com. Derudover skal du også tage et kig på http://www.jubii.dk og evt. smutte forbi www.youtube.com";

Jeg vil så gerne have lavet en funktion, der finder alle url's og smidder dem i et array.

Er det muligt?
På forhånd tak :-)
Avatar billede mcardle Nybegynder
03. august 2007 - 01:19 #1
Det er der vidst blevet spurgt om før, prøv at søg ;o)
Avatar billede zynzz Praktikant
03. august 2007 - 13:39 #2
Måske kan dette indlæg bruges: http://www.eksperten.dk/spm/252217
Avatar billede mcardle Nybegynder
03. august 2007 - 18:39 #3
Hvis du gerne vil have det til at virke med en hel hjemmeside, så kan du gøre sådan her.:

<?php

$lines = file("http://www.Den_hjemmeside_du_gerne_vil_finde_links_fra.dk");

foreach($lines as $line){
    $streng .= $line;
}

preg_match_all("/<a href=(['\"])(.*?)\\1>/is", $streng, $matches);

$url_matches = $matches[2];

foreach($url_matches as $url_match){
  echo "<a href='" . $url_match . "\">" . $url_match . "</a><br />";
}

?>
Avatar billede mcardle Nybegynder
03. august 2007 - 18:41 #4
Men med denne her, så tager den title, alt, onclick og hvad der nu ellers findes med. Det kan godt være du lige skal lave den om til.:

<?php

$lines = file("http://www.Den_hjemmeside_du_gerne_vil_finde_links_fra.dk");

foreach($lines as $line){
    $streng .= $line;
}

preg_match_all("/<a href=(['\"])(.*?)\\1>/is", $streng, $matches);

$url_matches = $matches[2];

foreach($url_matches as $url_match){
  echo "<a href='" . $url_match . "'>" . $url_match . "</a><br />";
}

?>

Men det kommer lidt an på, om hvordan linket ser ud, når du udskriver det.

//mcardle
Avatar billede jakobdo Ekspert
06. august 2007 - 18:12 #5
Men der er vel ikke tale om <a href="link">noget</a> links?
Som jeg forstår det, skal www.google.dk, http://www.jubii.dk og www.youtube.com findes.
Er det korrekt forstået?

Hvis ja, så er det vel noget i stil med:

if(preg_match_all('/((?:http:\/\/)?www\.[a-z0-9~#&:;=!\',_æøå()?\/.\-+[\]|*$%\^{}]+)/', $string, $links))
{
echo '<pre>';
print_r($links);
echo '</pre>';
}
Avatar billede chrille_the_mat Nybegynder
09. august 2007 - 22:56 #6
Først og fremmest undskyld for den lange svartid.

Det sidste script der blev postet er lige netop det jeg skal bruge. Problemet er bare, at den tekst jeg skal parse allerede har nogle links som enten er billeder, eller som allerede er links. Den skal altså kun tage dem der står alene.

Håber nogen kan hjælpe. Tak for de allerede gode svar.
Avatar billede jakobdo Ekspert
10. august 2007 - 07:44 #7
Hvad mener du med alene?
Kom med nogle eksempler...
Avatar billede chrille_the_mat Nybegynder
10. august 2007 - 14:57 #8
Hvis nu min $string ser sådan her ud:
$string = "<img src="http://www.somh.dk/bg.jpg" /> <a href="http://www.google.com">klik</a> http://www.youtube.com";

Så skal den kun vælge det sidste link og smide det i arrayet... jeg skal nemlig bruge det til noget autolink sjov..
Avatar billede jakobdo Ekspert
10. august 2007 - 15:05 #9
Kunne man så ikke strippe alle <img og <a tags og herefter lave en konvertering?

$new_string = strip_tags($string);
Avatar billede chrille_the_mat Nybegynder
10. august 2007 - 16:35 #10
du har fat i noget... jeg melder lige tilbage :)
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