PHP字符串如何按指定长度输出?

今天在学习一PHP开源程序,想要输出其系列变量进行查看时,因变量长度不一致,输出效果不理想
那PHP字符串怎么才能按指定长度输出呢?
查了下手册,大致有两种方法(str_pad、sprintf)可实现。

一、str_pad — 使用另一个字符串填充字符串为指定长度

手册中说明:

string str_pad ( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]] )

该函数返回 input 被从左端、右端或者同时两端被填充到制定长度后的结果。如果可选的 pad_string 参数没有被指定,input 将被空格字符填充,否则它将被 pad_string 填充到指定长度。

示例代码:

$input = "Alien";
echo str_pad($input, 10);                      // 默认为STR_PAD_RIGHT 右侧添加, 输出 "Alien     " 
echo str_pad($input, 10, "-=", STR_PAD_LEFT);  // 左侧添加, 输出 "-=-=-Alien"
echo str_pad($input, 10, "_", STR_PAD_BOTH);   // 左右同时添加, 输出 "__Alien___"
echo str_pad($input, 6 , "___");               // 输出 "Alien_"

二、sprintf – 返回一个格式化的字符串

手册中说明:

string sprintf ( string $format [, mixed $args [, mixed $... ]] )

该函数将按指定的字符串格式返回字符串

其中,手册中第5个示例代码,演示了补全的效果

Example #5 Specifying padding character
echo sprintf("%'.9d\n", 123);    // 输出 ......123
echo sprintf("%'.09d\n", 123);   // 输出 000000123

第8个示例代码,演示了不同格式实现左侧还是右侧补全的效果
$s = 'monkey';
$t = 'many monkeys';

printf("[%s]\n",      $s); // 标准输出
printf("[%10s]\n",    $s); // 右侧空格补全
printf("[%-10s]\n",   $s); // 左侧空格补全,即在数字前加-符号
printf("[%010s]\n",   $s); // 左侧以0补全
printf("[%'#10s]\n",  $s); // 以指定字符 '#'补全,注意:指定字符时需在字符前加'符号
printf("[%10.10s]\n", $t); // 左侧补全10位后,截取10位返回

示例输出:

[monkey]
[    monkey]
[monkey    ]
[0000monkey]
[####monkey]
[many monke]

3 thoughts on “PHP字符串如何按指定长度输出?”

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注