【发布时间】:2013-07-16 04:42:40
【问题描述】:
我有一个以下字符串作为文件名
$string = 'recyclage plétre francin.jpg';
并尝试使用以下代码
echo preg_replace('/[^a-z0-9|^.]/i', '_', iconv("UTF-8","ISO-8859-1//TRANSLIT",$string));
由于文件名中有一个特殊(非 ascii)字符,因此在使用 PHP 上传文件时会产生垃圾字符。
我想要的是用特定的 Ascii 字符替换任何 unicode(非 ascii)字符。
我想保留所有受支持的 Ascii 字符并删除非 ascii 字符。我还想保留/ 或\ 斜杠,因为文件名中有目录分隔符,其中将给出根路径。
编辑:(以下未解决)
我遇到了recyclage plƒtre francin.JPG 的问题,请使用f 字符,该字符显示的输出类似于recyclage pl,并且它已截断.JPG。实际上文件名是recyclage plâtre francin,当我调试时它显示recyclage plƒtre francin.JPG,其余的就是在那之后写的。有什么想法吗?
当我尝试转换 tri et recyclage du plâtre 但在阅读时显示 tri et recyclage du plâtre 并在转换后显示 tri et recyclage du pl^atre。
任何帮助将不胜感激。
【问题讨论】:
-
你试过
utf8_encode($string)吗? -
是的。但没有运气。我尝试了 PHP 函数的所有字符转换,最后决定替换 unicode 字符,只替换为特定字符,如
_ -
哦,我误会了,你想把它转换成 ascii
-
@steven,没问题 :)
标签: php utf-8 preg-replace ascii non-ascii-characters