首頁 > 後端開發 > php教程 > PHP中file_exists函數無法偵測包含中文的檔案名稱的解決方法

PHP中file_exists函數無法偵測包含中文的檔案名稱的解決方法

WBOY
發布: 2016-07-29 08:55:47
原創
1731 人瀏覽過

         PHP中一般使用file_exists()判斷某個檔案或資料夾是否存在,若檔案或資料夾存在則傳回true,不存在則傳回false。今天在實現文件下載功能時發現,在網頁使用UTF8編碼的情況下,該函數無法檢測包含中文的文件是否存在,並始終返回false。修改很久之後才發現是因為沒有把完整路徑進行編碼的原因,僅僅對檔案名稱進行轉碼是不夠的。

      下方的程式碼無法偵測包含中文的檔案是否存在,無論檔案是否在都回傳false:

   

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

   echo file_exists($file);    //输出为false
 ?>
登入後複製

     僅僅對檔案名稱進行轉碼也不行,這就是我所遇到的這種情況,需要把我遇到的這種情況,這需要【路徑+檔名】一起轉碼才可以

<?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
?>
登入後複製

    實際上,只要把文件路徑與文件名字從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
?>  
登入後複製


以上就介紹了PHP中file_exists函數無法偵測包含中文的檔案名稱的解決方法,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板