Avatar billede diz Nybegynder
29. oktober 2003 - 10:54 Der er 6 kommentarer og
1 løsning

tilføje http: til alle links

Hejsa,

Jeg har brug for at tilføje 'http://' til alle de links der forekommer i en HTML streng.

feks:

<html><body><a href="enMappe/side1.html">et_link</a><br><a href="enMappe/side2.html">et_andet_link</a></body></html>

skal komme til at se sådan ud :

<html><body><a href="http://enMappe/side1.html">et_link</a><br><a href="http://enMappe/side2.html">et_andet_link</a></body></html>


Alle de links som allerede indeholder http:// skal blot ignoreres.

PS : det skal også virke på eventuelle includes og stylesheets links.

/Sune
Avatar billede nak-m Nybegynder
29. oktober 2003 - 13:33 #1
Altså, hvis din html ligger i en variabel $str, så kan du fx skrive:

$str = preg_replace("/(href=\")(http:\/\/)?/i", "\\1http://", $str);
Avatar billede diz Nybegynder
29. oktober 2003 - 16:45 #2
det ser ganske fornuftigt ud, men der er lige et par ting.

Det jeg skal bruge det til er at tjekke alle ling i en html-streng. Og hvis der er nogen der er relative (href="enMappe/side1.htm") så¨skal der smides et domain foran så det kommer til at se sådan ud : href="http://www.domain.dk/enMappe/side1.htm". Hvis der er tale om links der referere til andre domæner (href="www.etandetdomain.dk/enside.htm") skal der ikke gøres noget.

Derudover virker det heller ikke hvis der står <a href=etlink.htm>, altså uden " (gåseøjne)

VH
Sune
Avatar billede nak-m Nybegynder
30. oktober 2003 - 08:35 #3
diz: det er altså også forkert at skrive href="" uden anførselstegn - i hvert fald meget dårlig øvelse ;)

Nå nok om det. Altså den skal smide http:// på domænelinks og domæner på relative links? Prøver lige.
Avatar billede diz Nybegynder
30. oktober 2003 - 09:26 #4
nak-m: Du har helt ret i at det ikke er den bedste øvelse at udelade ". Men der er stadig folk i denne onde verden der alligevel undlader det :)

Det er faktisk heller ikke det vigtigste i denne sag, så hvis den er svær at knække, gør det ikke spor.

/Sune
Avatar billede nak-m Nybegynder
30. oktober 2003 - 10:53 #5
diz: det skulle skam ikke være noget problem at tage højde for anførselstegn. Fikser det :)
Avatar billede diz Nybegynder
30. oktober 2003 - 10:55 #6
Jeg har selv prøvet mig lidt frem, men da jeg er helt ny i det med regulære udtryk er det lidt problematisk.

Jeg har lavet følgende:

$str = preg_replace("/(href=\")([^http:\/\/])/i", "\\1http://192.168.0.31/\\2", $str);

Den virker fint, og tilføjer http://192.168.0.31/ foran alle relative links, og lader alle normale links være, så længe de indeholder http://. Fair nok. Problemet opstår hvis et relativt link starter med 'h'. Så virker den sgu ikke. Så vidt jeg kan se må det have noget med at [^http:\/\/] betyder "bare ikke en af følgende",

Spørgsmålet er så hvordan man laver man så en "bare ikke følgende streng"

Håber nogen kan hjælpe, da det er ved at gå mig på nerverne :(

/Sune
Avatar billede diz Nybegynder
30. oktober 2003 - 11:56 #7
jeg har fået svar i : http://www.eksperten.dk/spm/420821

Men mange tak for din hjælp...den fik mig på rette vej
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