2009-12-09 10 views
1

J'ai un problème pour récupérer l'URL absolue d'une image distante. Ce que je fais est en ce moment ceci:PHP trouver un chemin absolu à distance

foreach($html->find('img') as $e){ 
$path = parse_url($e->src, PHP_URL_PATH); 
$absolute = realpath($path); 
    if($e->src==$path){ 
    echo '<img class="pic" src=' . $absolute . '/><br/>'; 
    } 

} 

Ce code a été écrit à l'aide du simple projet dom html. L'idée est que je ne peux pas afficher les images avec une URL relative dans le codage d'origine car elles ne sont pas situées sur mon serveur.

Alors ne quelqu'un sait comment résoudre le chemin absolu d'une image à distance?

+0

Je ne comprends pas très bien ce que vous entendez par le chemin absolu d'une URL distante. Vous ne pouvez pas référencer des fichiers distants en utilisant des chemins absolus. Vous devrez utiliser la norme ** http: //www.path.com/to/file.jpg** retournée par ** $ e-> src ** –

Répondre

1

Vous aurez besoin de saisir le domaine de base, ainsi que la racine url relative. Donc, si l'image a été trouvée sur la page, votresite.com/slideshow/4/view, mais qu'elle était relativement pointée sur ./../../images/435.jpg, vous pourriez simplement combiner les chemins . Sinon, si l'image pointe vers la racine des domaines (vous pouvez utiliser regex pour trouver si le premier caractère est un /), alors vous pouvez utiliser juste votre site.com et ajouter ce chemin à la chaîne.

Regardez http://php.net/manual/en/function.parse-url.php pour analyser l'URL dans l'hôte du site, la page par rapport à cet hôte.

0

Si vous connaissez l'adresse de l'endroit où vous filtrez ces images, pourquoi ne pas simplement l'ajouter à ce que les déclarations de propriété src?

0

Si vous faites cela beaucoup (comme un site entier), vous pouvez regarder la puissance que derrière wget.

L'une des options est de reconstruire urls, IIRC.

-k --convert-liens

vaudraient peut-être votre temps de jeter un oeil à wget.

Questions connexes