Chemin relatif / chemin absolu ... site externe

Résolu/Fermé
Signaler
Messages postés
6
Date d'inscription
mardi 27 novembre 2012
Statut
Membre
Dernière intervention
27 septembre 2013
-
Messages postés
6
Date d'inscription
mardi 27 novembre 2012
Statut
Membre
Dernière intervention
27 septembre 2013
-
Bonjour à tous,

Je rencontre un petit problème qui me fait tourner en rond depuis deux jours...

Je récupère le contenu d'une DIV située sur un site externe et je souhaite l'afficher sur mon site (dernière news d'un site partenaire).

J'effectue la récupération comme ça :
<?php
$file = file_get_contents('http://www.site-externe.fr/fr/news'); 
mb_eregi('<div class="news">(.*)', $file, $news);
$news = explode('</div>', $news[0]);
$news = str_replace('<div class="news">', '', $news[0]);
echo $news;
?>


Quand la news contient des images j'obtiens une ligne de code avec un lien relatif de l'image, ce lien est relatif à l'architecture du site sur lequel je récupère la news. Vous voyez un moyen simple pour régler ce problème ?

Je me relis et je me rends compte que je ne suis pas clair, alors... exemple :
Site d'origine de la news :
<div class="news">
<p> Bla bla bla super intéressant</p>
<img src="/images/jolie-photo.jpg"/>
</div>


Mon site :
<div class="news-import">
<h4> Les dernières news de notre partenaire</h4>
<div class="news">
<p> Bla bla bla super intéressant</p>
<img src="/images/jolie-photo.jpg"/>
</div>
</div>


Mais forcément sur mon serveur je n'ai pas de dossier "images" contenant le fichier "jolie-photo.jpg"...
Je voudrais trouver un moyen de remplacer le chemin relatif par un chemin absolu

Des idées

3 réponses

Salut, peut être un truk avec $news = str_replace('g src="/' , 'g src="www.blahblah"/'
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
895
Salut,
tu peux avoir plusieurs images ?
alors je t'ai adapté ça avec une solution qui tient compte de plusieurs images, avec la fonction preg_replace (vas voir sur G... pour plus de détails si besoin)

<?php 
$chaine='<div class="news"> 
<p> Bla bla bla super intéressant</p> 
<img src="/images/jolie-photo.jpg"/> 
<img src="/images/jolie-photo2.jpg"/> 
<img src="/images/jolie-photo3.jpg"/> 
</div> 
'; 

// capture des src avec preg_match_all 
preg_match_all(''<img src="(.*?)"'', $chaine, $out); 
/* 
//si tu de-commentes tu peux voir le contenu de cet array 
echo '<pre>'; 
print_r($out[1]); 
echo '</pre>'; 
*/ 
//on va generer les deux array pattern et replacement 
for($i=0;$i<sizeof($out[1]);$i++){ 
  //transfo en pattern (ajout delimiteurs #) 
 $pattern[$i]='#'.$out[1][$i].'#'; 
  //replacement 
 $replacement[$i]='http://www.site-partenaire.com'.$out[1][$i];; 
   
} 

$chaine2=preg_replace($pattern,$replacement,$chaine); 
//la chaine2 contient les images avec le chemin absolu 
echo "Chaine remplacée: ".$chaine2; 
//attention pour voir ici les chemins des images il faut faire afficher le code source de la page
?>
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
6
Date d'inscription
mardi 27 novembre 2012
Statut
Membre
Dernière intervention
27 septembre 2013

Merci beaucoup Alain_42, ton post m'a vraiment aidé
C'est la première fois que je travaille comme ça sur les chaines...
Instructif et très utile !!
Messages postés
6650
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 315
Bonjour,

Vous dites:
"Je voudrais trouver un moyen de remplacer le chemin relatif par un chemin absolu "

1) d'abord, je vous le déconseille très vivement.

La bonne solution: vous copiez l'image du site dans votre site (si les droits sur cette image sont libres) avec la même arborescence...

2) pourquoi c'est déconseillé:
- sur un de mes sites perso, j'avais détecté qu'un bricolo en HashTeuMeuLeu avait fait un lien sur une image de mon site. Il faisait 2 à 10 hits secondes. Mon fournisseur m'avais signalé que le 15 du mois j'allais être hors quota. D'habitude, je finis le mois à 10% du quota de bande passante. Le risque: devoir passer à la gamme d'hébergement au-dessus à un tarif nettement plus élevé.

Qu'est ce que j'ai fait?

J'ai tenté de contacter le bricolo par mail (10 mails au moins...).

J'ai fait un WHOIS et envoyé deux lettres et quelques appels téléphoniques...

Au bout de 30 jours, résultat nul.

J'ai tout simplement remplacé l'image par une photo porno!

C'est marrant ça, mais il a débranché le lien en une heure!

Alors si vous faites un lien vers une photo externe, sachez que vous n'aurez aucun contrôle sur le contenu de cette image.

A+
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
6
Date d'inscription
mardi 27 novembre 2012
Statut
Membre
Dernière intervention
27 septembre 2013

Salut mpmp93,

Je te remercie de ton commentaire et je comprends totalement ton avis.
Dans mon cas je souhaite afficher la dernière news d'un site partenaire, sur le principe je leur fait confiance et ma démarche a été autorisée par les propriétaires du site.
Copier l'image sur mon serveur implique que je vérifie très souvent l'évolution des news de mon partenaire et que je change le code source de ma page manuellement.
C'est pour ça que je souhaitais une solution "à chaud" pour que ma page soit en permanence à jour.

Grace à CCM et aussi SDZ j'ai concrétisé mon projet.

Merci bcp

pour info la page : http://www.cavaliersdelalouviere.com/news-andy-catherine-booth.php