2010-04-05 4 views
3

Есть ли эквивалент функции формата Perl в PHP? У меня есть клиент, у которого есть официант-принтер dotidata, и нужен хороший способ форматировать квитанции и счета с этим тайным зверем.PHP-эквивалент функции формата Perl

Я помню, легко делать это в Perl с чем-то вроде:

format BILLFORMAT = 
Name: @>>>>>>>>>>>>>>>>>>>>>> Age: @### 
     $name,       $age 
. 
write; 

Любые идеи будут высоко ценится, ударив головой о стену с этим. O.o

UPDATE: Я не могу установить Perl в этой среде, иначе я просто использовал бы функцию формата Perl напрямую.

+0

Вы пытаетесь поместить поля на предварительно отпечатанные формы? –

+0

Да, синан, действительно, я. :(Не радуйся, заметьте, хе-хе, но да. –

+0

Хорошо, мой ответ не помогает. Удачи! –

ответ

3

Вы можете использовать printf, чтобы сделать что-то подобное.

http://www.php.net/manual/en/function.printf.php

printf("Name: %21s  Age: %3i\n",$name,$age); 

Если вы хотите имя выравнивание по левому краю, вы бы просто добавить -

printf("Name: %-21s  Age: %3i\n",$name,$age); 

По умолчанию это значение права выровненные.

+0

Но это совсем не так, perl 'format'. – VolkerK

+0

Это отлично подходит для простой замены переменных, но это не позволяет гибкость для выравнивания строк и итерации через массивы, такие как функция формата perl. ;-) –

+0

Хотя он сильно отличается от функции формата perl, он позволяет выравнивать и итерации (довольно легко). printf родился, чтобы делать то, что он говорит о выполнении: форматирование вывода для устройств с фиксированной шириной. –

0

Если вы не против использования процесса Perl для управления принтером, вы можете сериализовать данные на PHP и передать его в Perl-скрипт.

Мне повезло с использованием PHP::Serialization для обработки сериализации данных и совместного использования между Perl и PHP. Вы также можете использовать YAML или JSON для этой задачи.

+0

Если бы я мог использовать perl, я бы просто использовал формат Perl и читал данные, которые мне нужны непосредственно из базы данных. Извините, я должен был сказать, что впереди, Я думаю, –

+0

@Dustin, я подумал, что это было бы неплохо, так как вы попросили PHP-решение. Мой ответ может соответствовать чужим потребностям. – daotoad

+0

@daotoad действительно. ;-) –

-2

Звучит как идеальная ситуация для использования heredoc.

+0

Heredoc также не хватает функциональности формата.Опять же, не хватает итерации массива, вертикального и горизонтального выравнивания и т. Д. –

+0

Я не знал, что 'format' предоставил итерацию. Вертикальное выравнивание может быть легко выполнено с помощью функции 'str_pad'. Основываясь на отзывах, похоже, что 'printf' - ваш лучший выбор. – Sonny

+0

Ой, я собираю здесь какую-то ненависть. – Sonny

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