2015-10-07 6 views
3

У меня возникла проблема, которая, вероятно, имеет простое решение, но поскольку я не эксперт php, я не могу ее найти. Я обычно делаю это Whan я должен вызвать команду оболочки из PHP:преобразование команды сценария linux shell в php

cmd = "convert file.pdf image.jpg"; 
shell_exec($cmd); 

Но теперь у меня есть команда, которая работает на оболочке, что я не могу заставить ее работать с PHP, так что я думаю, что, вероятно, способ излагают ту же команду, но на языке PHP,

команда:

for i in $(seq --format=%3.f 0 $nf); do echo doing OCR on page $i; tesseract '$imgdir/$imgdir-$i.ppm' '$imgdir-$i' -l eng; done 

мой PHP попробовать:

<?php 
$imgdir = "1987_3"; 
$nf = count(new GlobIterator('filesup/'.$imgdir.'/*')); 
$cmd = "for i in $(seq --format=%3.f 0 $nf); do echo doing OCR on page $i; tesseract '$imgdir/$imgdir-$i.ppm' '$imgdir-$i' -l eng; done" 
shell_exec($cmd); 
?> 

Что я получаю:

PHP Notice: Undefined variable: i in count.php on line 7 

предложения очень приветствуется ... спасибо

UPDATE

Я прочитал вопрос от одного я отмеченного как я понял из этого, было то, что у моего «i» должна быть ссылка, которая для команды оболочки есть, но она не работает, когда выполненный с php.

В отношении того, что я также попробовал это безуспешно:

<?php 
$imgdir = "1987_3"; 
$nf = count(new GlobIterator('filesup/'.$imgdir.'/*')); 
$cmd ="seq --format=%3.f 0 $nf"; 
$i = shell_exec($cmd); 
$cmd = "tesseract 'filesup/$imgdir/$imgdir-$i.jpg' 'filesup/$imgdir/$imgdir-$i' -l eng; done"; 
shell_exec($cmd); 
?> 
+0

Возможный дубликат [PHP: "Notice: Undefined переменной" и " Примечание: Неопределенный индекс "] (http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) – Epodax

ответ

3

PHP будет оценивать все переменные внутри строки с двойными кавычками, например:

<?php 
    $i=5; 
    echo "Your i is: $i"; 
?> 

выход: Your i is: 5

Если вы хотите избежать это behaivor, используйте простую цитату:

<?php 
    $i=5; 
    echo 'Your i is: $i'; 
?> 

выход: Your i is: $i

Обновить код как это:

<?php 
    $imgdir = "1987_3"; 
    $nf = count(new GlobIterator('filesup/'.$imgdir.'/*')); 
    $cmd = 'for i in $(seq --format=%3.f 0 $nf); do echo doing OCR on page $i; tesseract \'' . $imgdir/$imgdir . '-$i.ppm\' \'' . $imgdir . '-$i\' -l eng; done';  
    shell_exec($cmd); 
?> 
+0

Большое спасибо, мне пришлось внести небольшие коррективы в код , но это сработало, еще раз спасибо! –

+0

@ AndrésChandía приветствую :) –