***[PHP]文字埋め処理 [#bf7a65b5]
文字データ作成において古いソフトによっては文字数の幅が規定されている場合がある。~
-例(データはSJIS)
-例(データはSJISだがmb_convert_encodingにて内部処理をUTF-8に変更している)
,8文字,4文字,5文字,
,週刊誌 , 1, 400,
PHPでこのデータ群を作ろうとstr_padを使ってみたのだがうまくいかない。
文字数の判定が全角(2)、半角カタカナ(1)、英数字(1)でそれぞれ想定外の文字埋めをする。((str_padは全角(3)、半角カタカナ(3)、英数字(1)と半角カタカナと全角を判別できない))~
仕方が無いので次の方法でごまかしてみた。
#geshi{{{
function moji_ume($moji, $ume, $chg)
{
$moji_ume = ($chg) ? $moji . str_repeat(" ", $ume - mb_strwidth($moji))
: str_repeat(" ", $ume - mb_strwidth($moji)) . $moji;
return $moji_ume;
}
}}}
-上の例だとこんな感じ
#geshi{{{
echo ',' . moji_ume($fields[1], 8,1) . ',' . moji_ume($fields[1], 4,0) . ',' moji_ume($fields[1], 5,0) . ',';
}}}