这篇文章主要介绍了php中file_exists函数不支持中文名的解决方法,很实用的技巧,需要的朋友可以参考下
( i/ a0 b& \! B3 R$ R& X一般来说php中常使用file_exists()判断某个文件或者文件夹是否存在,如果存在则返回true,否则返回false。但是该函数在网页使用utf8编码的情况下,对于中文的文件名或者文件夹名不能返回正确值,始终返回false。经测试之后得出解决方法,分析造成这一情况的原因应该是编码不同而导致的php不能正确判断。/ r, K3 L+ n! E5 `7 q7 g
下面这段代码是不能够返回正确值的代码,无论文件是否在都返回不在:2 h( C4 ~5 g0 }, y% S2 M) e
<?php;
$ R3 B; r- H% ?8 h& W* W9 ^% v$file=/attachment/21/0/中文.rar; H) l" @) b9 t! l# K6 F u
$newfile = dirname(__file__).$file;" O9 z: E- U3 L! j4 H/ a3 }+ b
echo file_exists($newfile);" o- e& C+ o% e1 G5 V
?>' R3 m0 ^" K1 {7 ~
经过测试之后,增加了一句将utf8编码转换为gb2312编码的语句,就可以正确判断了:
q2 `$ T X3 i& E, d# J) s<?php0 C8 s7 v8 v0 o
$file=/attachment/21/0/中文.rar;$ K9 `! M; j$ u; e5 {
$newfile = dirname(__file__).$file;6 Z0 ~) D* O& r Q4 V
$file=iconv('utf-8','gb2312',$file);( y9 `8 G% @; D. O. ^ J# g
echo file_exists($newfile);/ } G! q! Z# b) k# U$ a
?>5 t1 { r! ]& z k% ~
# W, D0 Z S9 K6 t7 A
更多网页制作信息请查看: 网页制作 |
|