如何在php中的控制台上进行对齐
我正在尝试通过 PHP 中的命令提示符运行脚本,并尝试以表格形式显示结果。但由于单词的字符长度不同,我无法正确显示结果对齐。
我想要这样的结果
Book ISBN Department
Operating System 101 CS
C 102 CS
java 103 CS
任何人都可以帮助我在控制台上的 php 中获得这样的输出。
提前致谢
I am trying to run a script through command prompt in PHP and trying to show the result in tabular form. But due to different character length of words I am not able to show the result properly align.
I want result like this
Book ISBN Department
Operating System 101 CS
C 102 CS
java 103 CS
Can anyone please help me to get this output like this in php on console.
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
如果您不想(或由于某种原因不允许)使用库,您可以使用标准 php
printf
/sprintf
函数。它们的问题是,如果您有可变且不限制宽度的值,那么您将必须决定是否会截断长值或破坏表的布局。
第一种情况:
输出是
第二种情况:
如果
这两种情况都不能满足您的需求,并且您确实需要一个具有流动宽度列的表,那么您必须计算每列中值的最大宽度。但这就是
PEAR::Console_Table
的工作原理。If you don't want (or not allowed for some reason) to use libraries, you can use standard php
printf
/sprintf
functions.The problem with them that if you have values with variable and non-limited width, then you will have to decide if long values will be truncated or break table's layout.
First case:
The output is
Second case:
And here we get
If neither of that satisfies your needs and you really need a table with flowing width columns, than you have to calculate maximum width of values in each column. But that is how
PEAR::Console_Table
exactly works.您可以使用 PEAR::Console_Table:
示例:
输出:
You can use PEAR::Console_Table:
Example:
Output:
您最好的选择是使用 Pear 包 Console_Table ( http://pear.php.net/package/Console_Table /)。
要在控制台上使用 - 您需要安装 pear 软件包,运行:
这应该下载该软件包并安装。然后您可以使用示例脚本,例如:
Your best option is to use the Pear Package Console_Table ( http://pear.php.net/package/Console_Table/ ).
To use - on a console you need to install the pear package, running:
this should download the package and install. You can then use a sample script such as:
如果你不想使用标准的 PHP 函数,你可以尝试最近的简单 PHP 库 ConsoleTable printf/sprintf 或 pear 包 PEAR::Console_Table。
示例:
输出:
在 其 github 上查看更多示例用法页面。
You could try the recent simple PHP library ConsoleTable if you don't want to use the standard PHP functions printf/sprintf or the pear package PEAR::Console_Table.
Example:
Output:
See more example usages at its github page.
太旧了,但我现在也经历了同样的情况并使用了 str_pad,只需将长度设置为列的大小即可
。
Too old, but i went trough the same now and used str_pad, just set the lenght as the size of your column and thats it
regards.
CLIFramework 表生成器可以帮助您轻松完成工作,它支持文本对齐、文本颜色、背景颜色、文本换行、文本溢出处理等。
这是教程:https://github.com/c9s/CLIFramework/wiki/Using-Table-Component
示例代码:https://github.com/c9s/CLIFramework/blob/master/example/表.php
The CLIFramework table generator helps you get the job done very easily and it supports text alignment, text color, background color, text wrapping, text overflow handling.. etc
Here is the tutorial: https://github.com/c9s/CLIFramework/wiki/Using-Table-Component
Sample code: https://github.com/c9s/CLIFramework/blob/master/example/table.php
以防万一有人想用 PHP 做到这一点,我在 Github 上发布了一个要点
https://gist.github.com/redestructa/2a7691e7f3ae69ec5161220c99e2d1b3
只需调用:
您可能需要调整代码
如果您使用的 php 版本早于 7.2,则根据您的环境调用 echo 或 writeLine 之后, 。
Just in case someone wants to do that in PHP I posted a gist on Github
https://gist.github.com/redestructa/2a7691e7f3ae69ec5161220c99e2d1b3
simply call:
you may need to adapt the code if you are using a php version older than 7.2
after that call echo or writeLine depending on your environment.