file_exists () возвращает false для файлов с пробелами в имени

У меня есть этот код:

$url     = 'http://www.bgelectronics.eu/image/cache/data/cantell kabeli /14222-228x228.jpg';
$headers = get_headers($url, true);
var_dump($headers);

это возвращает ошибку для отсутствующего файла из-за пробела в имени файла:

array(6) { [0]=> string(34) "HTTP/1.1 500 Internal Server Error" ["Date"]=>
string(29) "Tue, 24 Mar 2015 16:11:18 GMT" ["Server"]=> string(6) "Apache"["Content-Length"]=> string(3) "677" ["Connection"]=> string(5) "close"["Content-Type"]=> string(29) "text/html; charset=iso-8859-1" } file size:677

Любые предложения, пожалуйста?

1

Решение

Проблема в том, что file_exists() для файловой системы, а не http. Вам нужно использовать путь к каталогу сервера. Если он находится на том же сервере, что и ваш код, он должен выглядеть примерно так:

if(file_exists('image/cache/data/cantell kabeli /202441-500x500.jpg')){
....

если на удаленном сервере, попробуйте:

if(file_get_contents('http://www.bgelectronics.eu/image/cache/data/cantell kabeli /202441-500x500.jpg')){
...

Вы можете найти много других способов здесь: Как можно проверить, существует ли удаленный файл с использованием PHP?

2

Другие решения

Попробуйте с этим:

copy('http://www.bgelectronics.eu/image/cache/data/cantell kabeli /202441-500x500.jpg', '/image.jpeg');

если нет, используйте file_get_contents

//Get the file
$content = file_get_contents("http://www.bgelectronics.eu/image/cache/data/cantell kabeli /202441-500x500.jpg");
//Store in the filesystem.
$fp = fopen("/location/to/save/image.jpg", "w");
fwrite($fp, $content);
fclose($fp);
0

По вопросам рекламы [email protected]