Ændre links href via php

Tags:    php

Jeg sidder med lidt af en hjernevrider her, synes jeg selv. Noget php kode henter html'en fra en side. Nu skal alle links så ændres fra eks. <a href="http://www.hej.com">Hej</a> til
<a href="http://side.dk/bla.php?url=http://www.hej.com">Hej</a>

Problemet er at den skal kunne ændre det lige meget hvordan <a> tagget er skrevet. Det kunne jo være at linket var skrevet således. <a class="menu" href="et_eller_andet"> eller en helt tredje måde.

Nogen der har en idé??


-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GED d- s: a--- C++ U? P L+ E? W++ N? o? K- w
O? M? V? PS PE? Y? PGP++ t 5? X+ R tv+ b+ DI? D+
G e-- h! !r y--
------END GEEK CODE BLOCK------



8 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Jeg sidder med lidt af en hjernevrider her, synes jeg selv. Noget php kode henter html'en fra en side. Nu skal alle links så ændres fra eks. <a href="http://www.hej.com">Hej</a> til
<a href="http://side.dk/bla.php?url=http://www.hej.com">Hej</a>

Problemet er at den skal kunne ændre det lige meget hvordan <a> tagget er skrevet. Det kunne jo være at linket var skrevet således. <a class="menu" href="et_eller_andet"> eller en helt tredje måde.

Nogen der har en idé??


brug et regulårt udtryk:

<?php
$link = '<a href="http://www.backinfiveminutes.com">BackInFiveMinutes.com</a>'."\\n".'<a href="www.backinfiveminutes.com">BackInFiveMinutes.com</a>';
echo preg_replace('/(<a.*?href=[\\"\\']{0,1})(http:\\/\\/.*?)([\\"\\']*?>;)/', '\\\\1http://minside.dk/?gourl=\\\\2\\\\3',$link);
?>

dette vil skrive alle links der starter med http:// om til http://minside.dk/?gourl=gammelt link, eksemlpet oven for producere følgende output:
<a href="http://minside.dk/?gourl=http://www.backinfiveminutes.com">BackInFiveMinutes.com</a>
<a href="www.backinfiveminutes.com">BackInFiveMinutes.com</a>

~ Steffen

\\"The only thing more frightening than a programmer with a screwdriver or a hardware engineer with a program is a user with a pair of wire cutters and the root password\\"
----------------------- EOF ----------------------



det her skulle kunne gøre det mere eller mindre hvis du kan få sourcen af html'en ind i en variable $in så efter den nedenstående linie kode burde du have det du ønsker i strengen $out.
Fold kodeboks ind/udKode 

-----------------------------------------------------------------------------

Min side ->www.the-hive.dk/~donp/



Jeg sidder med lidt af en hjernevrider her, synes jeg selv. Noget php kode henter html'en fra en side. Nu skal alle links så ændres fra eks. <a href="http://www.hej.com">Hej</a> til
<a href="http://side.dk/bla.php?url=http://www.hej.com">Hej</a>

Problemet er at den skal kunne ændre det lige meget hvordan <a> tagget er skrevet. Det kunne jo være at linket var skrevet således. <a class="menu" href="et_eller_andet"> eller en helt tredje måde.

Nogen der har en idé??


-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GED d- s: a--- C++ U? P L+ E? W++ N? o? K- w
O? M? V? PS PE? Y? PGP++ t 5? X+ R tv+ b+ DI? D+
G e-- h! !r y--
------END GEEK CODE BLOCK------


Det burde vel ikke være så svært.
Noget ala det her burde virke:
<pre>
function rmlink($var) {
$var = str_replace("(-http://www.)www.","http://side.dk/bla.php?url=www.",$var);
$var = str_replace("http://www.","http://side.dk/bla.php?url=http://www.",$var);

return $var;
}
</pre>
Den funktion burde gøre det;)

Christoffer Buchholz
cbuchholz at ofir dot dk
http://www.christofferb.dk

[Redigeret d. 25/10-05 21:34:47 af Christoffer]



Tror den er sværer end somså. Hvis du kender babelfish forstår du måske hvad jeg mener. Babelfish (babelfish.altavista.com) kan oversætte en webside til et andet sprog. Den laver alle links om så de kommer igennem oversætteren så man kan surfe videre på siden på et andet sprog. Den laver f.eks. også link af type <a href="index.php"> om til <a href="babelfish osv?url=siden_index.php_var_på.com/index.php">






-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GED d- s: a--- C++ U? P L+ E? W++ N? o? K- w
O? M? V? PS PE? Y? PGP++ t 5? X+ R tv+ b+ DI? D+
G e-- h! !r y--
------END GEEK CODE BLOCK------



Tror den er sværer end somså. Hvis du kender babelfish forstår du måske hvad jeg mener. Babelfish (babelfish.altavista.com) kan oversætte en webside til et andet sprog. Den laver alle links om så de kommer igennem oversætteren så man kan surfe videre på siden på et andet sprog. Den laver f.eks. også link af type <a href="index.php"> om til <a href="babelfish osv?url=siden_index.php_var_på.com/index.php">






-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GED d- s: a--- C++ U? P L+ E? W++ N? o? K- w
O? M? V? PS PE? Y? PGP++ t 5? X+ R tv+ b+ DI? D+
G e-- h! !r y--
------END GEEK CODE BLOCK------


Nå okay:(
- kender ikke babelfish, men har hørt om det;)

Christoffer Buchholz
cbuchholz at ofir dot dk
http://www.christofferb.dk



Det kode jeg skulle bruge det til fungerer ikke som ønsket så jeg tror jeg dropper det. Prøvede dog lige nørdens kode. Virkede nogen steder. Prøvede med google.dk. Fik følgende links:

localhost/ads
localhost/intl/da/about.html
http://side.dk/bla.php?url=http://www.google.com/ncr
+ nogle flere.

Der var kun et link hvor det virkede rigtigt :S. Men det er sikkert fordi de linker internt.

-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GED d- s: a--- C++ U? P L+ E? W++ N? o? K- w
O? M? V? PS PE? Y? PGP++ t 5? X+ R tv+ b+ DI? D+
G e-- h! !r y--
------END GEEK CODE BLOCK------



Denne virker en del bedre bygger på steffens som sikkert også virker.

lige en bemærkning ved jeg ikke helt hvad protokolen vil gøre hvis du klikker et link der ser således ud page?url=page?query1=value&query2=value

det her skulle kunne gøre det mere eller mindre hvis du kan få sourcen af html'en ind i en variable $in så efter den nedenstående linie kode burde du have det du ønsker i strengen $out.
Fold kodeboks ind/udKode 

-----------------------------------------------------------------------------

Min side ->www.the-hive.dk/~donp/



jeg tror han bliver nød til at hive det hele ud fordi han skal urlencode url'en

så det kommer nok til at lige noget preg_match_all han skal bruge

~ Steffen

\\"The only thing more frightening than a programmer with a screwdriver or a hardware engineer with a program is a user with a pair of wire cutters and the root password\\"
----------------------- EOF ----------------------



t