Urlencode et file_get_contents
Nous avons une url comme http://site.s3.amazonaws.com/images/some image @name.jpg
à l'intérieur de $string
Ce que je suis en train de faire (oui, il y a un espace autour de l'url):
$string = urlencode(trim($string));
$string_data = file_get_contents($string);
Ce que je reçois (@ est également remplacé):
file_get_contents(http%3A%2F%2Fsite.s3.amazonaws.com%2Fimages%[email protected])[function.file-get-contents]: failed to open stream: No such file or directory
Si vous copiez/collez http://site.s3.amazonaws.com/images/some image @name.jpg
dans la barre d'adresse du navigateur, l'image va s'ouvrir.
Ce qui est mauvais et comment le corriger?
Si vous mettez l'URL dans une URL non valide et puis vous vous demandez qu'elle ne fonctionne pas? Qu'est-ce que pour une question? Veuillez fournir des précisions.
Je ne peut pas envelopper la tête autour de cela. Pouvez-vous me fournir/nous ton code complet?
C'est une excellente réponse, stackoverflow.com/questions/8260564/...
Je ne peut pas envelopper la tête autour de cela. Pouvez-vous me fournir/nous ton code complet?
C'est une excellente réponse, stackoverflow.com/questions/8260564/...
OriginalL'auteur James | 2012-06-17
Vous devez vous connecter pour publier un commentaire.
L'URL que vous avez spécifié n'est pas valide.
file_get_contents
s'attend à un valide http URI (plus précisément, le sous-jacent http wrapper). Comme votre URI non valide n'est pas une URI valide,file_get_contents
échoue.Vous pouvez résoudre ce problème en transformant votre URI non valide dans une URI valide. Les informations sur comment écrire une URI valide est disponible dans RFC3986. Vous devez veiller à ce que tous les caractères spéciaux sont correctement représentés. par exemple, des espaces à plus de signes, et le commercial à signer doit être codées dans l'URL. Également superflue, les espaces au début et à la fin besoin d'être enlevé.
Quand c'est fait, le serveur web va vous dire que l'accès est interdit. Ensuite, vous pourriez avoir besoin d'ajouter des en-têtes de requête HTTP via les options de contexte pour le fichier HTTP wrapper pour le résoudre. Vous trouverez les informations dans le manuel PHP: http://-- https://— Accès HTTP(s) Url
OriginalL'auteur hakre
À l'aide de la fonction
urlencode()
pour l'ensemble de l'URL, va générer une URL non valide. Laissant l'URL, comme c'est aussi n'est pas correct, parce que contrairement à les navigateurs, lefile_get_contents()
fonction ne pas effectuer de URL de la normalisation. Dans votre exemple, vous devez remplacer les espaces avec%20
:enfin quelque chose qui fonctionne, merci
C'est une grande réponse: stackoverflow.com/questions/8260564/...
Que diriez -
RAWURLENCODE
?OriginalL'auteur Victor