Re: file_get_contents urlencode spaces: yeah right?
| From: | Jim Lucas | Date: | Mon, 10 Nov 2008 23:16:18 +0000 |
| Subject: | Re: file_get_contents urlencode spaces: yeah right? | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-283199@lists.php.net to get a copy of this message | ||
Dee Ayy wrote:
> PHP Version 5.1.6
> $contents =
> file_get_contents("http://user:pass@domain.com/some/path/htmlfile.html"); //WORKS
> $contents =
> file_get_contents("http://user:pass@domain.com/some/path/htmlfile
> with spaces.html"); //FAILS(1)
> $contents =
> file_get_contents("http://user:pass@domain.com/some/path/nonhtmlfile.ext"); //WORKS
> $contents = file_get_contents("áD7åu¨Í˜û帪
> Éãhttp://user:pass@domain.com/some/path/nonhtmlfile
> with spaces.ext"); //FAILS(2)
> $contents =
> file_get_contents(urlencode("http://user:pass@domain.com/some/path/eitherfile
> with spaces.ext")); //FAILS BUT I DON'T REALLY CARE
> $contents =
> file_get_contents(urlencode("http://user:pass@domain.com/some/path/eitherfilenospaces.ext")); //FAILS
> BUT I DON'T REALLY CARE
> $contents =
> file_get_contents("http://user:pass@domain.com/some/path/".urlencode("eitherfile
> with spaces.ext")); //FAILS WTF(1)
> $contents =
> file_get_contents("http://user:pass@domain.com/some/path/eitherfile+with+spaces.ext"); //FAILS
> WTF(2)
>
> <br />
> <b>Warning</b>:
> file_get_contents(http://...@domain.com/some/path/eitherfile+with+spaces.ext)
> [<a href='function.file-get-contents'>function.file-get-contents</a>]:
> failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in
> <b>/the/script/index.php</b> on line <b>(the file_get_contents
> line)</b><br />
>
> Yes, the files are there.
>
> file_get_contents docs:
> Note: If you're opening a URI with special characters, such as spaces,
> you need to encode the URI with urlencode().
>
> WTF?!?!
> How do I get FAILS(1) and FAILS(2) to work, in light of FAILS WTF(1)
> and FAILS WTF(2)?
>
Try replacing the '+' signs with %20. Worked for me.
I had the same results as you on my server. The only fix I found was to replace the + with %20.
Maybe the user agent & server are doing something special that file_get_contents() & server
are not doing.
--
Jim Lucas
"Some men are born to greatness, some achieve greatness,
and some have greatness thrust upon them."
Twelfth Night, Act II, Scene V
by William Shakespeare