这篇文章主要介绍了php中file_exists函数不支持中文名的解决方法,很实用的技巧,需要的朋友可以参考下
5 z2 h6 ]5 X- X' R; D5 \/ z) n一般来说php中常使用file_exists()判断某个文件或者文件夹是否存在,如果存在则返回true,否则返回false。但是该函数在网页使用utf8编码的情况下,对于中文的文件名或者文件夹名不能返回正确值,始终返回false。经测试之后得出解决方法,分析造成这一情况的原因应该是编码不同而导致的php不能正确判断。 h/ W# u$ m( Z! H9 d6 a
下面这段代码是不能够返回正确值的代码,无论文件是否在都返回不在:
T$ O( a% M( C2 c x, j" x<?php;
1 I# V* `9 B8 Z0 C$file=/attachment/21/0/中文.rar;$ s' z8 e j" U& P8 ] `
$newfile = dirname(__file__).$file;% {/ f$ }' ^' ?! q3 }
echo file_exists($newfile);
6 \( a5 p) ~6 ^7 G' W?>7 v% v2 ^6 {# g- N
经过测试之后,增加了一句将utf8编码转换为gb2312编码的语句,就可以正确判断了:
2 r- ]1 Z1 {' S0 C ]<?php, s2 o# c2 a/ x. _: P0 V
$file=/attachment/21/0/中文.rar;; j. }4 G8 M$ Z
$newfile = dirname(__file__).$file;
* \8 d: h H- m7 X' m$file=iconv('utf-8','gb2312',$file);. Z9 t0 ^# J" d) W& C0 c( }9 K
echo file_exists($newfile);
9 N* S G' `$ ]5 Q1 z/ e# X' i?>$ @9 W! }, A( U3 X) h
* }3 [* |+ s) R8 g# X, Z0 \
更多网页制作信息请查看: 网页制作 |
|