我面临一个可能有一个简单解决方案的问题,但由于我不是一个PHP专家,我找不到它。我通常这样做,我必须从php调用一个shell命令:
cmd = "convert file.pdf image.jpg";
shell_exec($cmd);
但是现在我有一个在shell上工作的命令,我不能让它从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
建议非常受欢迎...谢谢
更新
我已经从我标记为可能重复的那个问题中读到了问题,而我从中得知的是我的&#34;我&#34;必须有一个引用,对于shell命令,它有,但是从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 :(得分:3)
PHP 将使用双引号评估字符串中的所有变量,例如:
<?php
$i=5;
echo "Your i is: $i";
?>
输出:Your i is: 5
如果您想避免这种行为,请使用简单的引用:
<?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);
?>