2013-07-25 87 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