Avatar billede diz Nybegynder
15. november 2005 - 14:14 Der er 9 kommentarer

tilføje baseurl til alle links

Hejsa,

Jeg skal finde alle links på en side (både href og src) og tilføje en baseurl til den. jeg er ikke den store haj i Reg. Exp. Jeg har førsøgt med følgende pattern:

/href="(.*?)"/

hvorefter jeg erstatter det fundne med http://www.mitdomæne.dk/

Det virker sådan set fint nok når vi taler relative links, men når linket f.eks hedder:

"../side2.php"

så virker det sgu ikke lige. Det samme gælder så også for

"http://domaen.dk/side2.php"

Så hvad jeg har brug for er som sagt at tilføje et Baseurl til alle de hrefs/src som ikke har det. Og der skal tages hensyn til ../ problematikken.

Er der nogen der kan lede mig på rette spor :)

/Sune
Avatar billede diz Nybegynder
15. november 2005 - 14:27 #1
baseurl'et kan f.eks godt være http://www.test.dk/en_mappe/en_mappe_mere/

/Sune
Avatar billede diz Nybegynder
15. november 2005 - 15:18 #2
hvis den bare kan tilføje baseurl til alle der IKKE har http:// eller ../ foran er det også fint nok... så kan jeg erstatte ../ efterfølgende

/Sune
Avatar billede diz Nybegynder
15. november 2005 - 16:21 #3
nu har jeg fundet frem til følgende:

/<a href="[^(http:\/\/)]/i

Problemet er bare at den snupper den første karakter af linket. F.eks:

<a href="/side2.php">test</a>
bliver til
<a href="base_url/ide2.php">test</a>

hvor bliver det af?

/Sune
Avatar billede roenving Novice
15. november 2005 - 20:38 #4
Hvorfor tilføjer du ikke bare følgende i header-sektionen af dit dokument:

<base href="http://www.minSide.dk/">
Avatar billede roenving Novice
15. november 2005 - 20:40 #5
PS. base-tagget kan også sætte en default target inden for siden (meget brugbart til links, der mest åbnes i nye vinduer eller en indholds-(i)frame !-)
Avatar billede diz Nybegynder
15. november 2005 - 22:24 #6
Hej roenving,

Godt forslag, men jeg tror ikke det vil virke. Måske jeg lige skal forklare hvad det skal bruges til. Jeg har en side på site1, hvor der er en tabel som indeholder en en del af en side fra site2. Jeg henter indholdet vha en phpside som så parser siden fra site2 og tager en del af den og viser den i min tabel. Derfor vil det skabe problemer hvis jeg benytter <base href="side2/"> da alle de rigtige links på site1 så ikke vil virke. Derfor er jeg nødt til at parse alle links som jeg henter fra site2.

Håber det giver mening og at du måske kan hjælpe mig :)

/Sune
Avatar billede roenving Novice
15. november 2005 - 22:36 #7
Hvis du har absolutte links vil det ikke blive overridet af en base url !-)

-- og du tester jo netop for, at de absolutte links _ikke_ skal udskiftes !o]
Avatar billede diz Nybegynder
16. november 2005 - 11:07 #8
Problemet er jo at en del links er på site1 og de er ikke alle absolute så de vil pludselig linke til site2 hvor de jo ikke eksisterer.

Eks:

<a href="/mappe/site1_side2">relativt link på site1</a>
<a href="http://www.site1.dk/mappe/site1_side2">absolut link på site1</a>

<table><tr><td>
Indhold fra site2:

<a href="/mappe/site2_side2">relativt link på site2</a>
<a href="http://www.site2.dk/mappe/site2_side2">absolut link på site2</a>
<a href="../anden_mappe/site2_side3">relativt link på site2</a>

</td></tr></table>

Hvis jeg satte baseurl på denne side til http://www.site1.dk ville de 3 nederste link ikke linke til site2 mere og omvendt. Så derfor er jeg nødt til at parse alle links fra site2 og lave dem absloute.

Giver det mening?

/Sune
Avatar billede roenving Novice
16. november 2005 - 12:11 #9
Jo da, men når du viser et eller andet med at erstatte alle ikke-absolutte, er det jo svært at vide, at du kun gør det på en stump af koden !o]

-- iøvrigt ville det vel være det nemmeste i længden at erstatte de faste links (site1-tingene !-) med absolutte ...
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
Kurser inden for grundlæggende programmering

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