gpt4 book ai didi

使用 utf-8 阿拉伯字符集字符串的文件名的 PHP 重命名失败

转载 作者:行者123 更新时间:2023-12-04 05:41:04 26 4
gpt4 key购买 nike

我有一个 php 重命名功能的问题,如果文件名是带有空格的阿拉伯语单词,它会失败。

例如

rename(temp/أم كلثوم       ثوار - ثوار.mp3,audio/13408831061.mp3);

(路径)中没有这样的文件或目录

请注意: أم كلثومxxxxxxxxثوار - ثوار.mp3 xxxxxxx这里至少有六个空格。

我试过 urlencode()但仍然没有结果。

任何建议!

最佳答案

检查您的 $file_id是正确的,请在类 Unix 系统上执行此操作:

echo "<pre>\n"; // for HTML output only
system("echo -n '$file_id' | od -tx1");

使用这个值,它应该是你报告的文件名(你可以做一个 echo 来检查)
$file_id = "\xD9\x83\xD9\x84\xD8\xAB\xD9\x88\xD9\x85 \xD8\xAB\xD9\x88\xD8\xA7\xD8\xB1 - \xD8\xAB\xD9\x88\xD8\xA7\xD8\xB1.mp3";

输出是
0000000 d9 83 d9 84 d8 ab d9 88 d9 85 20 d8 ab d9 88 d8
0000020 a7 d8 b1 20 2d 20 d8 ab d9 88 d8 a7 d8 b1 2e 6d
0000040 70 33
0000042

(如您所见,以 B1 结尾的序列会自我重复,最后 4 个字节是 .mp3 )

在文件应该在的目录中,您可以发出
ls -1 | od -tx1

你会看到所有文件名以 0a 分隔哪些是换行符。

如果两个输出匹配,则问题出在 PHP 或系统中(两者都不太可能),如果不匹配,您将不得不从编码开始,从编码开始,到处都必须是 UTF-8。

关于使用 utf-8 阿拉伯字符集字符串的文件名的 PHP 重命名失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11243863/

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