В общем, как вы уже поняли, никогда не используйте $_FILES['send_file']['name']
без какой-либо проверки.
Невозможно сказать, каким будет ваш $_FILES['send_file']['name']
, потому что это установлено браузером. Поэтому ваш браузер предварительно обрабатывает имя файла и удаляет все нежелательные символы.
Давайте посмотрим, что происходит, когда вы выбираете файл и отправляете форму (заголовки сокращены):
POST /upload.php HTTP/1.1
Host: localhost:8080
Content-Length: 1234
Origin: http://localhost:8080
[...]
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="send_file"; filename="hello.pdf"
Content-Type: application/x-object
... contents of file goes here ...
------WebKitFormBoundary7MA4YWxkTrZu0gW
В этом случае $_FILES['send_file']['name']
будет установлен на hello.pdf
.
Короче говоря, ни PHP, ни ваш веб-сервер не выполняют (насколько мне известно) никакой предварительной обработки имени файла. Он устанавливается операционной системой и браузером вашего пользователя.