Problème avec file_get_contents

Résolu
hmedo Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Salut tout le monde :)

Voila j'ai un souci avec file_get_contents, je m'explique je veut télécharger une image avec le lien de l'image que je rentre dans une variable mais sa me mais une erreur.
Voici le code :

$image = "http:".$img;
// Ouvre un fichier pour lire un contenu existant
$current = file_get_contents($image);
// Écrit le résultat dans le fichier
$file = "image/".$titre[1].".jpg";
file_put_contents($file, $current);

Et voici l'erreur :

file_get_contents(http: //cdn1.wakanim.tv/library/2212_636180180623279591Acca350_hq.jpg ): failed to open stream: Invalid argument

22 réponses

Utilisateur anonyme
 
OK

Dans de nombreux systèmes, les lignes sont séparées par deux caractères de codes ASCII 10 (saut de ligne ou '\n') et 13 (ou retour chariot, '\r')
Ton code n'élimine que les sauts de ligne. Il suffit d'éliminer en plus les retours chariot. Rajoute
$code_page = str_replace("\r", "", $code_page);
Mais attention, tes lignes ne sont plus séparés par rien du tout, c'est peut-être gênant pour d'autres traitement que tu fais. Il est peut être préférable de ne le faire que sur le lien que tu as extrait.
1
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
"http: //cdn1.wakanim.tv/library/2212_636180180623279591Acca350_hq.jpg"
L'espace entre les : et les // est un ajout de l'édition ou est-il présent dans ta chaine ?
0
hmedo Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
l’espace est un ajout de l'edition
0
zucrezel Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   4
 
Bonjour,

allow_url_fopen est activé dans php.ini ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hmedo Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
oui il est activer
0
zucrezel Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   4
 
A mon avis, vu l'espace dans le message d'erreur, il y a un espace en trop à la fin de ta variable $img (juste après le .jpg):
$img="//cdn1.wakanim.tv/library/2212_636180180623279591Acca350_hq.jpg ";

Retire l'espace entre le .jpg et la guillemet " :
$img="//cdn1.wakanim.tv/library/2212_636180180623279591Acca350_hq.jpg";

Pour en être sûr debugge ta variable $img que tu n'as pas indiquée:
var_dump($img)
0
Utilisateur anonyme
 
Bonsoir

Re-vérifie bien qu'il n'y a pas d'espace du côté des : et du // Car le seul moyen avec lequel je réussis à reproduire ton message d'erreur, c'est en insérant des caractères indésirables du côté de :// Toutes mes autres tentatives donnent des messages différents.
Tu peux faire un echo strlen($image); et bien compter les caractères su nom du fichier pour vérifier ?
0
hmedo Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
j'ai vérifier avec var_dump il ne me montrent pas d'espaces et pour etre sur jai fait :

$img = str_replace(' ', '', $img);

et j'ai fait strlen et j'ai compter mais tout est bon je comprend pas d'ou peut venir le probleme
0
Utilisateur anonyme
 
Le strlen affichait combien ?
0
hmedo Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
71
0
Utilisateur anonyme
 
Pourtant, il ne devrait faire que 68
Tu as vraiment des caractères en trop.

D'où vient ton $img ?
0
zucrezel Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   4
 
En fait 63 sans le http: de son code.
Envoie stp le contenu du var_dump($img).
0
hmedo Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
string '//cdn1.wakanim.tv/library/2212_636180180623279591Acca350_hq.jpg' (length=65)
0
zucrezel Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   4
 
2 espaces en trop à la fin après le .jpg je pense.
Essaies ceci pour supprimer tous les espaces en début et en fin de chaîne :
trim($img)
0
hmedo Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
oui le problème sont les 2 espaces en trop mais je suis sensé les supprimer avec $img = str_replace(' ', '', $image);
0
zucrezel Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   4
 
Essaies ceci pour supprimer tous les espaces en début et en fin de chaîne :
trim($img)
0
hmedo Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
sa ne marchent pas
0
Utilisateur anonyme
 
Non, les espaces en trop à la fin ne provoquent pas d'erreur. Chez moi j'en rajoute et il n'y a pas de problème.

Dis-nous comment tu obtiens ta valeur dans $img
Et il est absurde d'essayer de retirer des caractères à l'aveuglette arce qu'on suppose qu'ils sont là. Il faut les mettre en évidence, puis en supprimer la cause.
0
hmedo Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
je récupère le code source d'une page web venant d'un autre site et la je récupère le lien de l'image en la mettant dans $img
0
Utilisateur anonyme
 
for ($k=0; $k<strlen($img); $k++) echo ord($img[$k]),' ';


pour voir ce qu'il y a VRAIMENT dans $img

Ensuite on verra comment tu fais pour récupérer ce code source et récupérer le lien.
0
hmedo Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
sa me met sa :
104 116 116 112 58 13 47 47 99 100 110 49 46 119 97 107 97 110 105 109 46 116 118 47 108 105 98 114 97 114 121 47 50 50 49 50 95 54 51 54 49 56 48 49 56 48 54 50 51 50 55 57 53 57 49 65 99 99 97 51 53 48 95 104 113 46 106 112 103 13
0
Utilisateur anonyme
 
Tu as du faire la manip sur $image, et non pas $img.

Les deux "13" qu'on voit sont des caractères de fin de ligne ("retour chariot") qui n'ont rien à faire ici. Il y en a un entre le : et le //, et un dernier complètement à la fin.
Ils sont éliminés par le trim, à condition de le faire sur la partie $img seule :
https://www.php.net/manual/fr/function.trim.php

Comment fais-tu en pratique pour récupérer ce code source ?
0