Avatar billede shjorth Nybegynder
09. november 2009 - 02:03 Der er 8 kommentarer og
1 løsning

Se om en sti er korrekt med PHP

Hejsa.

Jeg har en masse links til billeder på imageshack og diverse steder. Er der nogen der ved om PHP kan validere det link, og returnere et "ja" hvis stien er korrekt, og der er et billede i den anden ende?

Mange tak
Avatar billede arne_v Ekspert
09. november 2009 - 03:50 #1
Jeg tror at file_exists funktionen virker på en HTTP URL !
Avatar billede Six Nybegynder
09. november 2009 - 07:04 #2
Jeg tror ikke file_exists tager HTTP URL's

Jeg fandt noget her, der kan fortælle dig om filen er der eller ej :)

    function url_exists($url){
       
        $url = str_replace("http://", "", $url);
       
        if (strstr($url, "/")) {
            $url = explode("/", $url, 2);
            $url[1] = "/".$url[1];
        } else {
            $url = array($url, "/");
        }
       
        $fh = fsockopen($url[0], 80);
        if ($fh) {
            fputs($fh,"GET ".$url[1]." HTTP/1.1\nHost:".$url[0]."\n\n");
            if (fread($fh, 22) == "HTTP/1.1 404 Not Found") {
                return FALSE;
            } else {
                return TRUE;
            }
        } else {
            return FALSE;
        }
    }
   
    if(@url_exists('http://linktildinfil.dk/fil.jpg')) {
        echo "Filen findes";
    } else {
        echo "Filen findes ikke";
    }

Du kan så selv modificere der videre til at fortælle dig om det er et billed eller ej.
Avatar billede repox Seniormester
09. november 2009 - 15:28 #3
Det er hurtigere og nemmere med cURL (IMO).


<?php

  $ch = curl_init("http://img208.imageshack.us/i/horeshit.jpg");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $data = curl_exec($ch);
  $info = curl_getinfo($ch);
  curl_close($ch);
 
  if($info["http_code"] == "200")
    echo "File exists";
  else
    echo "File doesn't exist";

?>



Så er det jo bare et spørgsmål om hvad man er til...
Avatar billede shjorth Nybegynder
09. november 2009 - 16:19 #4
curl_init funktionen er vist ikke installeret på min server. Det var umidlebart den smarteste funktion, da jeg så ikke skal downloade hele billedet for at se.

Jeg har indtil videre brugt if(@getimagesize.... og det virker fint, med den ulempe at det er langsomt af helvedes til.
Avatar billede repox Seniormester
09. november 2009 - 17:39 #5
?!?
Lad os lige få navn på dem der hoster dig, så vi fremover kan advare folk om at bruge det firma, når de ikke engang vil tilbyde cURL...
Avatar billede coderdk Praktikant
09. november 2009 - 22:47 #6
Alternativt:

$arr = get_headers( "http://www.eksperten.dk/images/eksperten_logo.gif" );
if ( preg_match( "/200/", $arr[0] ) )
{
    echo "Yay!";
}
else
{
    echo "Damn...";
}
Avatar billede coderdk Praktikant
09. november 2009 - 22:51 #7
(Du kunne også checke om content-type startede med image/*)
Avatar billede shjorth Nybegynder
03. december 2009 - 21:27 #8
Mange tak, smider i et svar?
Avatar billede coderdk Praktikant
03. december 2009 - 21:52 #9
:)
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

IT-JOB

Lægemiddelstyrelsen

Løsningsarkitekt

Forsvarsministeriets Materiel- og Indkøbsstyrelse

IT-Sikkerhedsrådgiver til Cyberdivisionen i Hvidovre

Capgemini Danmark A/S

IGNITE Graduate Program 2026

Erhvervsakademi Aarhus

Undervisere til it-uddannelser