Php 带非英语字符的str_pad

Php 带非英语字符的str_pad,php,unicode-string,Php,Unicode String,当我尝试在希伯来语单词上使用零str_pad()时,它不会添加所需数量的零 例如: $word='שלום'; $str=str_pad($word,10,' ',STR_PAD_RIGHT); 结果是: שלום00 stru焊盘(…)不是多字节安全的。这意味着,由于您使用的是4个2字节字符,因此函数会看到字符串长度为8,因此只有2个零用于填充 我在PHP手册中发现了这个用户贡献的函数。它未经测试,使用风险由您自己承担,但在我看来,这正是您需要的 function mb_str_pad (

当我尝试在希伯来语单词上使用零str_pad()时,它不会添加所需数量的零

例如:

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

שלום00
stru焊盘(…)
不是多字节安全的。这意味着,由于您使用的是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); 
}

这些是多字节字符,占用的空间比您想象的要大。您无法在多字节字符串上可靠地使用单字节函数。可能重复的