Ошибка PHP функции copy() если в названии файла есть русские буквы

У PHP функции copy($from, $to) возникает ошибка, если в параметре $from указать URL, в котором содержатся русские буквы, например:

$from = 'https://snipp.ru/demo/906/Ибисы бесплатные фотографии.jpg';
$to = __DIR__ . '/' . basename($from);
copy($url, $to);
PHP

Вернет ошибку:

Warning: copy(https://snipp.ru/demo/906/Ибисы бесплатные фотографии.jpg): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request

URL-кодирование кириллицы с помощью функции rawurlencode():

function urlencode_str($matches)
{
	$str = $matches[0];
	$str = rawurlencode($str);
	return $str;
}

$from = 'https://snipp.ru/demo/906/Ибисы бесплатные фотографии.jpg';
$from = preg_replace_callback('/[а-яА-Яёй\s]+/ui', 'urlencode_str', $from);
$to = __DIR__ . '/' . basename($from);

copy($from, $to);
PHP
21.03.2023
1844

Комментарии

, чтобы добавить комментарий.

Другие публикации

Сохранить все изображения со страницы сайта
Скрипт парсит все изображения из тега со страницы сайта, сохраняя структуру директорий и имена файлов.
15708
+5
Загрузка файлов на сервер PHP
В статье приведен пример формы и php-скрипта для безопасной загрузки файлов на сервер, возможные ошибки и рекомендации при работе с данной темой.
72619
+22
Отдача файлов на скачивание PHP
В PHP отправка файла в браузер на скачивание осуществляется в 2 этапа...
29206
+4
Запись и чтение файлов в PHP
Примеры сохранения и чтения текстовых данных и массивов в файлы.
58803
+11
Запись в лог-файл в PHP
Несколько вариантов как быстро организовать запись данных в лог-файл.
82026
+12
Поиск файлов в PHP
Для поиска файлов на сервере хорошо подходит функция glob(), которая возвращает список файлов по заданной маске, например...
24297
+1