Home > PHPのお話 > str_pad マルチバイト

str_pad マルチバイト

str_pad関数とは

string str_pad(string 文字列, int 固定長[, string 埋め込み文字列[, int 埋め方]])
「文字列」の長さが「固定長」に満たない時、(指定されたら)「埋め込み文字列」で(指定されない場合は「 (空白)」で埋められる)「固定長」になるまで埋めてその結果を返す関数です。
「埋め方」には、「STR_PAD_RIGHT」(右側に埋める)、「STR_PAD_LEFT」(左側に埋める)、「STR_PAD_BOTH」(両側に埋める)のいずれかの定数を指定出来ます。省略した場合のデフォルト値は「STR_PAD_RIGHT」です。

と、マルチバイトには対応していないらしいです。

$input1 = "Sample";
$str1 = str_pad($input1, 20, "+");
echo $str1;

出力:Sample++++++++++++++

シングルバイトなら問題ないが、日本語(マルチバイト)では、うまく行かない

$input 2= "Sample文字列";
$str2 = str_pad($input2, 20, "+");
echo $str2;

出力:Sample文字列+++++


仕方ないので、文字数をカウントしてからstr_repeatで
連結することにする。


$input3 = "Sample文字列";
$count3 = mb_strlen($input3, 'UTF-8');
                    ↑判別する文字コードと同じにする。
UTF-8、EUC、SJISじゃないと正常に動作しなかったかも

カウントした文字数分マイナスする
$str3 = str_repeat("+",(20-$count3));

echo "input3=" .$input3;
echo "文字数:" .$count3;
echo $input3.$str3;

動作結果




このアイテムは閉鎖されました。このアイテムへのコメントの追加、投票はできません。

Trackback:No Trackbacks

TrackBack URL for this entry
Sorry, no trackback pings are accepted.
Listed below are links to weblogs that reference
str_pad マルチバイト from 世の中いろいろ
トラックバック
このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。 もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.

Home > PHPのお話 > str_pad マルチバイト

Search
Feeds

Page Top