кодирование — как работать с неанглийскими символами с переполнением стека

У меня есть код в PHP, который создает файл с именем, которое пользовательский ввод, как показано ниже

HTML

<form method="post">
<input type="text" name="file">
<input type="submit">
</form>

PHP

$file = $_POST['file'].'.php';
$f = fopen($file, 'w');
fclose($f);

проблема появляется, когда пользователь использует неанглийские символы
пример пользовательского ввода = اللغة العربيه

resault = ظ… ط ± ط§ظ ‡ ظ‚ظˆ-ط§ظ „طھط§ظٹطھظ † ط. php

но это должно быть = اللغة العربيه. php

1

Решение

Попытка создать файлы с неанглийскими именами файлов может быть довольно сложной.

Самое простое решение — вообще не использовать такие имена файлов, а кодировать все имена файлов, например. с urlencode:

$filename = $_POST['file'].'.php';
$encoded_filename = urlencode($filename);
$f = fopen($encoded_filename, 'w');
fclose($f);

Это не повлияет на английские символы и позволит создавать имена файлов на любом языке.

Обратите внимание, что каждая файловая система будет иметь некоторые ограничения на длину имен файлов, поэтому если $encoded_filename становится слишком долго, это не будет работать.

0

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

Других решений пока нет …