У меня есть код в 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
Попытка создать файлы с неанглийскими именами файлов может быть довольно сложной.
Самое простое решение — вообще не использовать такие имена файлов, а кодировать все имена файлов, например. с urlencode
:
$filename = $_POST['file'].'.php';
$encoded_filename = urlencode($filename);
$f = fopen($encoded_filename, 'w');
fclose($f);
Это не повлияет на английские символы и позволит создавать имена файлов на любом языке.
Обратите внимание, что каждая файловая система будет иметь некоторые ограничения на длину имен файлов, поэтому если $encoded_filename
становится слишком долго, это не будет работать.
Других решений пока нет …