Problème avec file_get_contents

Résolu/Fermé
hmedo Messages postés 19 Date d'inscription dimanche 25 octobre 2015 Statut Membre Dernière intervention 27 mai 2017 - 23 févr. 2017 à 20:23
 Utilisateur anonyme - 24 févr. 2017 à 00:04
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

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 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
23 févr. 2017 à 20:42
"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 dimanche 25 octobre 2015 Statut Membre Dernière intervention 27 mai 2017
23 févr. 2017 à 21:25
l’espace est un ajout de l'edition
0
zucrezel Messages postés 30 Date d'inscription mardi 7 février 2017 Statut Membre Dernière intervention 19 juillet 2017 4
23 févr. 2017 à 21:38
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 dimanche 25 octobre 2015 Statut Membre Dernière intervention 27 mai 2017
Modifié par hmedo le 23/02/2017 à 21:48
oui il est activer
0
zucrezel Messages postés 30 Date d'inscription mardi 7 février 2017 Statut Membre Dernière intervention 19 juillet 2017 4
Modifié par zucrezel le 23/02/2017 à 22:37
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
23 févr. 2017 à 22:41
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 dimanche 25 octobre 2015 Statut Membre Dernière intervention 27 mai 2017
23 févr. 2017 à 22:52
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
23 févr. 2017 à 23:01
Le strlen affichait combien ?
0
hmedo Messages postés 19 Date d'inscription dimanche 25 octobre 2015 Statut Membre Dernière intervention 27 mai 2017
23 févr. 2017 à 23:02
71
0
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 mardi 7 février 2017 Statut Membre Dernière intervention 19 juillet 2017 4
Modifié par zucrezel le 23/02/2017 à 23:09
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 dimanche 25 octobre 2015 Statut Membre Dernière intervention 27 mai 2017
Modifié par hmedo le 23/02/2017 à 23:12
string '//cdn1.wakanim.tv/library/2212_636180180623279591Acca350_hq.jpg' (length=65)
0
zucrezel Messages postés 30 Date d'inscription mardi 7 février 2017 Statut Membre Dernière intervention 19 juillet 2017 4
Modifié par zucrezel le 23/02/2017 à 23:18
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 dimanche 25 octobre 2015 Statut Membre Dernière intervention 27 mai 2017
23 févr. 2017 à 23:17
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 mardi 7 février 2017 Statut Membre Dernière intervention 19 juillet 2017 4
23 févr. 2017 à 23:19
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 dimanche 25 octobre 2015 Statut Membre Dernière intervention 27 mai 2017
23 févr. 2017 à 23:22
sa ne marchent pas
0
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 dimanche 25 octobre 2015 Statut Membre Dernière intervention 27 mai 2017
23 févr. 2017 à 23:23
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
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 dimanche 25 octobre 2015 Statut Membre Dernière intervention 27 mai 2017
23 févr. 2017 à 23:26
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
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