2010-12-09 15 views
1

Wie würde ich dies als PHP-Skript umschreiben. Auch wenn jemand einen besseren Weg als LAME kennt, lass es mich wissen.Ein Bash-Skript zu PHP umschreiben?

for i in *.wav; do 
    lame -h -b 192 "$i" "${i%.wav}.mp3" 
done 
+0

Warum würden Sie das in PHP verwenden? Sie könnten dieses Shell-Skript einfach mit ['exec()'] (http://php.net/exec) oder ähnlichem aufrufen. – jwueller

Antwort

2

Die einfache Rewrite wäre:

<?php 
foreach(glob('*.wav') as $i){ 
    exec('lame -h -b 192 ' . escapeshellarg($i) . ' ' . escape_shellarg(basename($i, '.wav') . '.mp3')); 
} 

Natürlich bietet es keinen Vorteil gegenüber der Shell-Skript ;-)

Edit: Ich bin mit bash nicht beherrschen, aber ich ${i%.wav} vermuten kann das .wav Suffix entfernen; Ich habe den PHP-Code entsprechend geändert.

+0

Es wird 'sh -c' einmal für jede Datei ausgeführt. Es ist ein kleiner Overhead im Vergleich zu laufen natürlich lahm, aber es ist verschwendete Wärme. :) – sarnold

2

Sie könnten glob verwenden.

foreach (glob("*.wav") as $filename) { 
..code .. 
} 
+0

so innerhalb des Globs kann ich die Bash-Anweisung einfügen – acctman

2

Sie müssen den lame Befehl in der Shell sowieso auszuführen, so gibt es keine Verwendung dafür. Wenn Sie die Verarbeitung von PHP kicken müssen, führen Sie einfach das gesamte Skript von PHP aus.

+0

+1 Guter Punkt. Dennoch möchte er vielleicht die Liste der Dateien innerhalb von PHP steuern, um mit dem Benutzer oder etwas zu interagieren, so dass die Antwort von @ AntonioCS auch gilt: –