gpt4 book ai didi

php - 如何使用 PHP 从字符串中截断非 ascii 字符

转载 作者:行者123 更新时间:2023-12-01 08:32:11 27 4
gpt4 key购买 nike

我有一个以下字符串作为文件名

$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.

任何帮助将不胜感激。

最佳答案

如果您使用 TRANSLIT 修饰符,它会替换所有无法在目标编码中显示的字符。由于 é 可以在 ISO-8859-1 中表示,它被编码为 ANSI-Code 0xE9

我猜你想要这样的东西:

$string = 'recyclage plétre francin.jpg';
echo iconv("UTF-8","ASCII//TRANSLIT",$string);

iconv 调用的结果是:recyclage pletre francin.jpg

关于php - 如何使用 PHP 从字符串中截断非 ascii 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17668159/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com