这篇文章主要介绍了php中file_exists函数不支持中文名的解决方法,很实用的技巧,需要的朋友可以参考下
3 [& ^0 `" }( K f4 a一般来说php中常使用file_exists()判断某个文件或者文件夹是否存在,如果存在则返回true,否则返回false。但是该函数在网页使用utf8编码的情况下,对于中文的文件名或者文件夹名不能返回正确值,始终返回false。经测试之后得出解决方法,分析造成这一情况的原因应该是编码不同而导致的php不能正确判断。
( w. @6 {$ d, ]# H下面这段代码是不能够返回正确值的代码,无论文件是否在都返回不在:
' S+ n( ]- L( h: ~<?php;
, Q# i' H8 b! D& E6 l, x5 V$file=/attachment/21/0/中文.rar;
+ g! a" Z% [5 Z6 U/ f( ?$newfile = dirname(__file__).$file;7 q: D# w; a- t$ M
echo file_exists($newfile);
; r8 h0 Z. l( Y5 |. ~* Z3 W?>
2 P# r$ l: F8 b' v( {) u2 g9 S经过测试之后,增加了一句将utf8编码转换为gb2312编码的语句,就可以正确判断了:4 _' \* ^5 ]7 S5 Y+ C* ~, n
<?php- n: h, s* y' {0 |
$file=/attachment/21/0/中文.rar;! a N, q% I- N6 y% P
$newfile = dirname(__file__).$file;
+ `% Z6 I1 I3 C' I$ R" N$file=iconv('utf-8','gb2312',$file);/ Q4 v* Q! _/ W ]" T
echo file_exists($newfile);
- N8 S" d) `$ {# ~5 l" N?>, F: a0 r6 v- s' h+ I; B6 ?- k& |
$ j. R) \+ w+ c9 I& Q
更多网页制作信息请查看: 网页制作 |
|