我使用特殊字符(瑞典字母åäö).
现在,我有一些文件夹,其中包含分类广告的图像.文件夹按类别命名.
for ($i=1; $i<=5; $i++){
if (file_exists($big_images.$i.'.jpg')){ echo "Inne";
unlink($big_images.$i.'.jpg');
}
if (file_exists($thumb_images.$i.'.jpg')){
unlink($thumb_images.$i.'.jpg');
}
}
Run Code Online (Sandbox Code Playgroud)
我在我的网站上最多允许5个图像,每个图像以1-5的结尾.但是,我的问题是,只要文件夹名称有一个特殊字符,file_exists就会返回false,即它找不到该文件.即使它在那里.
所有文件均采用utf-8格式.
当文件夹名称中没有特殊字符时,此方法有效.
如果您需要更多输入,请告诉我
bob*_*nce 22
什么是服务器操作系统?
如果是Windows,则无法以UTF-8编码的文件名访问文件,因为PHP使用的C IO库的Windows实现只能在系统默认代码页中进行通信.对于西欧安装,那是代码页1252.您可以使用iconv将UTF-8字符串转换为cp1252:
$winfilename= iconv('utf-8', 'cp1252', $utffilename);
Run Code Online (Sandbox Code Playgroud)
(utf8_decode也可以使用,但它会为Windows的扩展字符提供错误的结果,这些字符映射到cp1252中的0x80-0x9F范围.)
PHP和其他使用stdio的程序根本无法访问其名称包含系统代码页的所有字符之外的字符的文件(例如西方文件夹中的希腊语).有些脚本语言可以通过Win32 API使用本机Unicode文件名,但PHP5不是其中之一.
当然,在文件系统采用UTF-8编码的不同操作系统上部署时,不应使用上述步骤.(即现代Linux.)
如果您需要与PHP无缝地跨服务器兼容,则必须避免在文件名中使用非ASCII字符.抱歉.