2013-07-25 100 views
-2

当我尝试在希伯来文字上用零填充strpad()时,它不会添加所需数量的零。非英文字符的手写板

例如:

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

结果:

שלום00 
+2

这些都是多字节字符采取更多的空间比你认为他们做 –

+1

多字节字符串无法可靠地使用单字节功能。可能重复的[PHP,str \ _pad unicode问题](http://stackoverflow.com/questions/14773072/php-str-pad-unicode-issue) –

回答

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); 
} 
+0

谢谢你多数民众赞成!!!!!!!!!! – Shani