Top > diary > 2008-01-21

[PHP]文字埋め処理 Edit

文字データ作成において古いソフトによっては文字数の幅が規定されている場合がある。

  • 例(データはSJISだがmb_convert_encodingにて内部処理をUTF-8に変更している)
    ,8文字,4文字,5文字,
,週刊誌  ,   1,  400,

PHPでこのデータ群を作ろうとstr_padを使ってみたのだがうまくいかない。 文字数の判定が全角(2)、半角カタカナ(1)、英数字(1)でそれぞれ想定外の文字埋めをする。*1
仕方が無いので次の方法でごまかしてみた。

	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;
	}
  • 上の例だとこんな感じ
echo ',' . moji_ume($fields[1], 8,1) . ',' . moji_ume($fields[1], 4,0) . ',' moji_ume($fields[1], 5,0) . ',';

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes