Как мне написать конвертер для преобразования файла PHP в файл Bash? - PullRequest
0 голосов
/ 04 июня 2009

Моя не очень плохая версия для реализации это:

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"

Кажется, с этой функцией кавычка заменяется пробелом.

1 Ответ

3 голосов
/ 04 июня 2009

Решение состоит в том, чтобы использовать функцию escapeshellarg в PHP (http://uk.php.net/manual/en/function.escapeshellarg.php):

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

exec('ls ' . $file);

Он будет заключать в кавычки и избегать кавычек для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...