Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP相当于Perl格式函数_Php_Perl_Format_Printing - Fatal编程技术网

PHP相当于Perl格式函数

PHP相当于Perl格式函数,php,perl,format,printing,Php,Perl,Format,Printing,PHP中是否有与Perl的format函数等效的函数?我有一个客户有一台老式的okidata dotmatrix打印机,需要一种很好的方法用这个神秘的野兽格式化收据和账单 我记得很容易在perl中通过以下方式实现这一点: format BILLFORMAT = Name: @>>>>>>>>>>>>>>>>>>>>>> Age: @### $na

PHP中是否有与Perl的format函数等效的函数?我有一个客户有一台老式的okidata dotmatrix打印机,需要一种很好的方法用这个神秘的野兽格式化收据和账单

我记得很容易在perl中通过以下方式实现这一点:

format BILLFORMAT = 
Name: @>>>>>>>>>>>>>>>>>>>>>>    Age: @###
      $name,                          $age
.
write;
如果有任何想法,我都会非常感激,用这个想法把我的头撞在墙上。O.O


更新:我无法在此环境中安装Perl,否则我将直接使用Perl的format函数。

您可以使用printf执行类似的操作

如果希望名称左对齐,只需添加一个-

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

它默认为右对齐。

如果您不介意使用Perl进程控制打印机,可以用PHP序列化数据并将其传递给Perl脚本


我很幸运地使用它来处理Perl和PHP之间的数据序列化和共享。您也可以使用YAML或JSON来完成此任务。

听起来是一个完美的使用环境。

您是否试图在预打印表单上填充字段?是的,sinan,确实是这样(请注意,我对此并不满意,呵呵,但是的。好吧,我的答案对你们没有帮助。祝你们好运!我相信我有我的答案,并没有一个PHP等价物。printf可以用来模拟许多对齐功能,但仍然缺少Perl格式所具有的许多惊人的功能。我将把这个给Joshua作为他的解决方案d最接近于一种解决方案。:)这对于简单地替换变量很好,但它不允许像perl format函数那样灵活地对齐行和遍历数组。;-)虽然它与perl的format函数有很大不同,但它允许对齐和迭代(非常容易)。printf生来就是要做他所说的事情:为固定宽度的设备格式化输出。我将对printf做更多的研究,看看格式化功能是否缺少什么,谢谢Joshua。但是
format
可以做得更多。有
格式xyz_TOP
。它可以将格式应用到某个流中,然后在其他地方准备数据,只需
写入
。以以下格式运行代码。切断(并重新使用)对字段来说太长的数据等等。。。当试图用printf替换它时,有很多代码需要编写。同意,volkerK,这就是我在这个实例中需要研究的内容(如果我能使用perl,我只会使用perl格式,直接从数据库中读取我需要的数据。对不起,我想我应该事先说明一下。@Dustin,我想这很有可能行不通,因为你需要一个PHP解决方案。我的回答可能适合其他人的需要。Heredoc也没有达到预期的效果。)mat功能。同样,缺少数组迭代、垂直和水平对齐等。我不知道
格式
提供了迭代。垂直对齐可以通过
stru_pad
功能轻松完成。根据反馈,看起来
printf
是你的最佳选择。哎哟,我听到了一些讨厌的声音重新。
printf("Name: %-21s     Age: %3i\n",$name,$age);