Heim > Backend-Entwicklung > PHP-Tutorial > PHP中file_exists函数不能检测包含中文的文件名的解决办法

PHP中file_exists函数不能检测包含中文的文件名的解决办法

WBOY
Freigeben: 2016-07-29 08:55:47
Original
1731 Leute haben es durchsucht

         PHP中一般使用file_exists()判断某个文件或者文件夹是否存在,如果文件或文件夹存在则返回true,不存在则返回false。今天在实现文件下载功能时发现,在网页使用UTF8编码的情况下,该函数无法检测包含中文的文件是否存在,始终返回false。修改很久之后才发现是因为没有把完整路径进行编码的原因,仅仅对文件名进行转码是不够的。

      下面的代码无法检测包含中文的文件是否存在,无论文件是否在都返回false:

   

 <?php ;
   $file=&#39;../uploads/file/中文.pdf&#39;;    //  在../uploads/file/文件夹中  中文.pdf   实际存在

   echo file_exists($file);    //输出为false
 ?>
Nach dem Login kopieren

     仅仅对文件名进行转码也不行,这是我遇到的这种情况,需要把【路径+文件名】一起转码才可以

<?php $file= &#39;中文.pdf&#39;;    //  在../uploads/file/文件夹中  中文.pdf   实际存在
   $file=iconv(&#39;UTF-8&#39;,&#39;GB2312&#39;,$file);
   echo file_exists(&#39;../uploads/file/&#39; . $file);    //输出为false
?>
Nach dem Login kopieren

    实际上,只要把文件路径与文件名字从UTF8编码转换为GB2312编码,改进后就可以准确判断了:

<?php $file=&#39;../uploads/file/中文.pdf&#39;;    //  在../uploads/file/文件夹中  中文.pdf   实际存在
    $file=iconv(&#39;UTF-8&#39;,&#39;GB2312&#39;,$file);
    echo file_exists($file); //输出为true
?>  
Nach dem Login kopieren


以上就介绍了PHP中file_exists函数不能检测包含中文的文件名的解决办法,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage