2012-01-20 2 views
0

Это работает:shell_exec, ImageMagick новообращенный, кажется, не нравится долларов

shell_exec('convert Q39.pdf Q39.png');

В то время как это не делает:

$id = 39; shell_exec('convert Q$id.pdf Q$id.png');

В другом shell_exec с другой командой (pdflatex) оно работает. Как-то $ идентификатор игнорируется, так что файл не найден, поэтому, выполнив:

$id = 39; shell_exec('convert Q39.pdf Q$id.png');

Я получаю правильный файл с именем Q.png.

Любые идеи, как я могу это решить?

Заранее спасибо.

ответ

1

Чтобы использовать переменные в строковых литералов вы должны либо использовать двойные кавычки:

$id = 39; shell_exec("convert Q$id.pdf Q$id.png"); 

или сцепить их:

$id = 39; shell_exec('convert Q'.$id.'.pdf Q'.$id.'.png'); 

Я рекомендую второй путь, поскольку это более читаемым при использовании подсветки синтаксиса.

Или еще лучше, убедитесь, что всегда десятичное:

$id = 39; shell_exec(sprintf('convert Q%1$d.pdf Q%1$d.png', $id)); 

Это также покажет вам, какие переменные используются для построения команды.

+0

Работает как очарование. Благодаря! – Geoff

Смежные вопросы