2013-10-23 51 views
0

我在網上搜索過,沒有得到正確的答案,所以問題是 - 它甚至有可能嗎?帶有特殊字符的PHP make目錄(mkdir)

我使用下面的代碼:

$file = $_POST['file_path']; 
$content = $_POST['file_content']; 
//get vars from post 

$path = explode("/",$file); 
$path_start = $path[0]."/".$path[1]; 
//define path_start 

$i = 1; 
while ($file != $path_start) { 
if (!file_exists($path_start)) { 
    mkdir($path_start,0777); 
}//end if 
$i++; 
$path_start = $path_start."/".$path[$i]; 
} //end while 

if (isset($file) && isset($content)) { 
    if (file_exists($file)) { 
    unlink($file); 
    } // file does not exist ... not anymore anyways 
    $fp = fopen($file, 'w+'); 
    fwrite($fp,$content); 
    fclose($fp); 
    echo "The path is ".$file; 
    } else { 
    echo "Error!"; 
} 

所以事情是$文件包含具有類似名稱的完整路徑:

\評論\Folderč\Folderž\文件夾\ File22 .txt

該代碼工作正常,將其拆分,但問題是...創建文件夾與Folderč名稱。我根本不能使用任何種類的替換字符函數,因爲所有其他文件都取決於已經設置的變量(以及大量的文件)。

那麼有沒有mkdir模式來創建具有特殊字符的文件夾?

感謝您的反饋

+0

我建議你不要創建文件或文件夾使用UTF-8 /特殊字符。使用ANSI編碼的非特殊字符文件夾。不僅PHP可能會遇到麻煩,也包括oder程序,kernel,os,這只是不好的做法,我可以想象由於多字節字符等原因而遇到文件系統問題...... – DanFromGermany

+0

唯一正確的答案是:不要這樣做! –

回答

2

嘗試使用utf8-encode()一樣,

$file = utf8_encode($_POST['file_path']); // use utf8-encode here 
$content = $_POST['file_content']; 
//get vars from post 

$path = explode("/",$file); 
$path_start = utf8_encode($path[0]."/".$path[1]); // use utf8-encode here 
//define path_start 

$i = 1; 
while ($file != $path_start) { 
    if (!file_exists($path_start)) { 
     mkdir($path_start,0777); 
    }//end if 
    $i++; 
    $path_start = utf8_encode($path_start."/".$path[$i]); // use utf8-encode here 
} //end while 

// your remaining code here