如何用PHP处理非英语字符

时间:2016-08-07 11:43:45

标签: php encoding charts character-encoding char

我在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 个答案:

答案 0 :(得分:0)

尝试使用非英文文件名创建文件可能会非常困难。

最简单的解决方案是根本不使用此类文件名,但编码所有文件名,例如与urlencode

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

这不会影响英文字符,并允许使用任何语言创建文件名。

请注意,每个文件系统对文件名的长度都有一些限制,因此如果$encoded_filename变得太长,则无效。