2009-06-04 50 views
0

我到目前爲止還沒有那麼壞的版本來實現,這是:如何編寫轉換器將PHP文件更改爲Bash文件?

function bashFileConvert($file) 
{ 
    return preg_replace('/([^\/\s]+\s+[^\/]+)(\/|$)/','"${1}"${2}',$file); 
} 

當有文件名的空間,其主要是處理該問題,像

$flie = '/usr/local/my test file.txt' 

而不會Bash可識別。

所以我需要調用像之前轉換爲

$file = '/usr/local/"my test file.txt"' 

exec('ls ' . $file); 

但還是有很多其他的角落情況下,如報價和「&」的問題。

那麼,有沒有現成的版本來完成這項工作?

==================================

現在我試圖escapeshellarg(),但這裏有點奇怪:

$file = '/usr/local/apache2/resumes_txt/5/San Francisco/qtzhang/Device "Engineer"/Job Resume Qintao Zhang.pdf.txt'; 
echo escapeshellarg($file); 

D:\\test>php test.php 
"/usr/local/apache2/resumes_txt/5/San Francisco/qtzhang/Device Engineer /Job Resume Qintao Zhang.pdf.txt" 

看來用這個函數,報價被替換爲空格。

回答

3

的解決方案是使用escapeshellarg功能在PHP(http://uk.php.net/manual/en/function.escapeshellarg.php):

$file = escapeshellarg('/usr/local/my test file.txt'); 

exec('ls ' . $file); 

將包裹報價一輪它和逃避的報價爲您服務。

+0

如果有一個「in file本身? – omg 2009-06-04 09:58:52