Problème avec file_get_contents
Résolu
hmedo
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
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
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.
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.
"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 ?
L'espace entre les : et les // est un ajout de l'édition ou est-il présent dans ta chaine ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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):
Retire l'espace entre le .jpg et la guillemet " :
Pour en être sûr debugge ta variable $img que tu n'as pas indiquée:
$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)
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 ?
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 ?
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
$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
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 :
Essaies ceci pour supprimer tous les espaces en début et en fin de chaîne :
trim($img)
oui le problème sont les 2 espaces en trop mais je suis sensé les supprimer avec $img = str_replace(' ', '', $image);
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.
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.
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
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.
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
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
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 ?
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 ?