这篇文章主要介绍了php中file_exists函数不支持中文名的解决方法,很实用的技巧,需要的朋友可以参考下
3 \. q3 X5 X& d$ }0 I1 d) R一般来说php中常使用file_exists()判断某个文件或者文件夹是否存在,如果存在则返回true,否则返回false。但是该函数在网页使用utf8编码的情况下,对于中文的文件名或者文件夹名不能返回正确值,始终返回false。经测试之后得出解决方法,分析造成这一情况的原因应该是编码不同而导致的php不能正确判断。: h) p- o6 ]3 @8 y6 E2 Q$ m
下面这段代码是不能够返回正确值的代码,无论文件是否在都返回不在:
0 P/ W4 N, \3 @* a) [0 ^<?php;; l8 `( F% Z( a. ~
$file=/attachment/21/0/中文.rar;0 A3 C# D) c$ J& q0 o+ |2 V; c
$newfile = dirname(__file__).$file;
3 I' o. a q( N# recho file_exists($newfile);0 s' M; ]/ H' ~
?>
- [& x: E" b. H# P0 {- j9 v1 {/ f经过测试之后,增加了一句将utf8编码转换为gb2312编码的语句,就可以正确判断了:
6 U! b; Q/ D6 d% m9 y. Y a<?php7 X E" W" k6 f! M9 x& _9 V' | `+ U
$file=/attachment/21/0/中文.rar;
* \; Y+ K( |" j, `$newfile = dirname(__file__).$file;
7 [4 @5 u9 Q/ M9 \$file=iconv('utf-8','gb2312',$file);$ k8 l) ]+ z; g* g4 o% `% @
echo file_exists($newfile);
# f p- |( V) j, t?> C$ Y' U5 q9 N6 D8 [8 i
6 H) P. Y2 x; G6 \# k, P
更多网页制作信息请查看: 网页制作 |
|