Bash dosyası içine PHP dosyası değiştirmek için böyle bir dönüştürücü yazmak nasıl?

1 Cevap php

Bunu uygulamak için benim şimdiye kadar çok kötü değil versiyonu:

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

hangi dosya adı bir boşluk gibi olduğunda çoğunlukla sorunu işler

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

de Bash için tanınabilir olmayacak

böylece dönüştürmek gerekiyor

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

gibi bir şey callintg önce:

exec('ls ' . $file);

Ama diğer birçok köşe durumlarda alıntı gibi, hala ve '&' Sorun,

bu yüzden, bu işi yapmak için hazır bir sürümü var?

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

Şimdi ben) (escapeshellarg çalıştı, ama burada biraz garip:

$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"

Bu fonksiyon ile görünüyor, alıntı bir boşluk ile değiştirilir?

1 Cevap

Çözüm php escapeshellarg işlevini kullanmaktır (http://uk.php.net/manual/en/function.escapeshellarg.php):

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

exec('ls ' . $file);

O yuvarlak tırnak sarın ve sizin için tırnak kaçış olacaktır.