Chemin relatif / chemin absolu ... site externe

Résolu/Fermé
toni84 Messages postés 6 Date d'inscription mardi 27 novembre 2012 Statut Membre Dernière intervention 27 septembre 2013 - 27 nov. 2012 à 05:35
toni84 Messages postés 6 Date d'inscription mardi 27 novembre 2012 Statut Membre Dernière intervention 27 septembre 2013 - 28 nov. 2012 à 06:01
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

A voir également:

3 réponses

Salut, peut être un truk avec $news = str_replace('g src="/' , 'g src="www.blahblah"/'
1
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 27/11/2012 à 09:38
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
toni84 Messages postés 6 Date d'inscription mardi 27 novembre 2012 Statut Membre Dernière intervention 27 septembre 2013
28 nov. 2012 à 06:01
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 !!
0
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
27 nov. 2012 à 09:39
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
toni84 Messages postés 6 Date d'inscription mardi 27 novembre 2012 Statut Membre Dernière intervention 27 septembre 2013
28 nov. 2012 à 05:59
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
0