Avatar billede retep Nybegynder
14. december 2004 - 16:14 Der er 6 kommentarer og
1 løsning

Lave alle billede-links til absolutte links

Nogen der har et script, der kan finde alle <img> - tags og checke om src-attributten er absolut (starter med http://) og hvis ikke indsætte http://www.domænenavn.dk/ foran stien.

Dvs.
<img src="images/pic.jpg"> skal laves om til <img src="http://www.domænenavn.dk/images/pic.jpg">

Men <IMG SRC="http://www.domæne.dk/images/pic2.jpg"> skal der ikke ændres på...

Der skal gerne tages højde for store og små bogstaver.

Håber der er nogen der har en idé til en løsning... Evt. et regulært udtryk (men dem er desværre selv ret elendig til).

På forhånd tak ;)
Avatar billede coderdk Praktikant
14. december 2004 - 16:41 #1
Prøv:

    $text = <<<STOP
<img src="images/pic.jpg"> skal laves om til <img src="http://www.domænenavn.dk/images/pic.jpg">

Men <IMG SRC="http://www.domæne.dk/images/pic2.jpg"> skal der ikke ændres på...
STOP;

    echo preg_replace( "/(<img src=\")(http\:\/\/[^\/]+)?\/?([^>]+)/i", "\\1http://www.domænenavn.dk/\\3", $text );
Avatar billede retep Nybegynder
14. december 2004 - 21:18 #2
Damn... Jeg fatter virkelig ikke de regulære udtryk *GGG*

Findes der en god oversigtsside på nettet?

Ser ud til at virke perfekt! Men hvis nu brugeren har skrevet src=' med enkelt apostrof, så virker den ikke.
Jeg kan lige finde ud af at rette det sådan:

$text = preg_replace( "/(<img src=\")(http\:\/\/[^\/]+)?\/?([^>]+)/i", "\\1http://www.domænenavn.dk/\\3", $text );
$text = preg_replace( "/(<img src=\')(http\:\/\/[^\/]+)?\/?([^>]+)/i", "\\1http://www.domænenavn.dk/\\3", $text );
echo $text;

Men kunne være cool med en enkelt linie hvis det er ligetil!
Avatar billede coderdk Praktikant
14. december 2004 - 21:42 #3
En enkelt linje:

$text = preg_replace( "/(<img src=[\"'])(http\:\/\/[^\/]+)?\/?([^>]+)/i", "\\1http://www.domænenavn.dk/\\3", $text );

Regulære udtryk er virkelig guld værd ;) Det tager lige lidt at tænke på den måde, men det er det hele værd ;) Du kan nok finde noget om det vha google:

http://www.google.dk/search?q=php+regular+expressions+tutorial

:)
Avatar billede coderdk Praktikant
14. december 2004 - 21:43 #4
Selvfølgelig også PHP's egen dokumentation:

http://dk2.php.net/manual/en/reference.pcre.pattern.syntax.php

WebCafe har en i perl, men du kan bruge det samme i PHP:

http://www.webcafe.dk/artikler/perl/regulaereudtryk/
Avatar billede retep Nybegynder
14. december 2004 - 23:24 #5
Ja, de er sgu smarte... Jeg bliver nok nødt til at bruge lidt (mere) tid på dem ;)

Jeg synes dog at have fundet en ting der ikke virker:
$text = 'Pic test 1:<img src="images/pic.jpg">  <br><br> PicTest2: <IMG SRC="http://www.domæne.dk/images/pic2.jpg">  <br><br> PicTest3 : <img src=\'asdasd/asd.asd\'>';

function fullUrlImgSrc($text, $domain){
    $text = preg_replace( "/(<img src=[\"'])(http\:\/\/[^\/]+)?\/?([^>]+)/i", "\\1$domain/\\3", $text );
    return $text;
}

echo fullUrlImgSrc($text, "http://www.test.dk");

I det eksempel bliver alle src sat til www.test.dk også det billede der allerede har en absolut url... R det til at rette? ;)

Har også overvejet om man skulle fjerne "<img " fra udtrykket da man jo godt kan skrive <img border="0" src="">, men kan ikke lige overskue om det kommer til at medføre andre problemer.
Avatar billede coderdk Praktikant
15. december 2004 - 00:00 #6
Damn den kunne jeg ikke lige se med det samme, men dette lader til at virke:

        $text = preg_replace( "/(<img src=[\"'])(?!http\:\/\/[^\/]+)(\/?[^>]+)/i", "\\1$domain/\\2", $text );

Faktisk startede jeg med at teste min oprindelige igen, og der virkede den ikke - Forvirrende, da jeg er sikker på at det jeg prøvede virkede dér :P
Avatar billede retep Nybegynder
15. december 2004 - 00:14 #7
Wheee... det virker ;)

Rigtig mange tak for hjælpen!

Jeg mener helt sikkert også at jeg testede den første, hvor det virkede... Nå, det skal vi nok ikke spekulere for meget på ;)
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