Strpad与非英语字符

时间:2013-07-25 07:00:28

标签: php variables

当我尝试在希伯来词上使用零的strpad()时,它不会添加所需的零值。

例如:

$word='שלום';
$str=str_pad($word,10,' ',STR_PAD_RIGHT);

结果:

שלום00

1 个答案:

答案 0 :(得分:2)

str_pad(...)不是多字节安全的。这意味着,由于您使用了4个2字节字符,因此该函数看到字符串长度为8,因此只有2个零用于填充。

我在PHP手册中发现了这个用户贡献的功能。它是未经测试的,使用风险自负,但在我看来,这正是您所寻找的。

function mb_str_pad ($input, $pad_length, $pad_string, $pad_style, $encoding="UTF-8") {
   return str_pad($input, 
                  strlen($input)-mb_strlen($input,$encoding)+$pad_length, 
                  $pad_string, $pad_style); 
}