PHP 4桁ごとにハイフンを入れる
例えば、問い合わせ番号などユニークな番号を発番する方法はいろいろとありますが、12桁を超えると「見にくい」「認識しにくい」番号になります。
4桁ごとにハイフンを入れると見やすくなるので、PHP適当な関数がないかと探したら、数字3桁ごとにカンマを入れるものはありましたが、アルファベットが混ざるとNGでした。
なので、オリジナルで作成してみました。
今回は、指定桁ごとに文字を挟む関数の忘備録です。
やりたいことは以下のような作業
例えば「AW7392S0HJEIR3」というような半角英数字の文字列を
「AW73-92S0-HJEI-R3」という風に4桁ごとにハイフンを入れます。
条件は
・桁数は一定ではない
・半角文字のみである
この条件で処理を作ってみました。
組み込みでのコード
取り急ぎPHPで組んでみました。
// コード指定
$code = “AW7392S0HJEIR3”;//出力コード初期化
$out_code = null;// コードを4桁ごとに分割
$in_code = str_split($code, 4);for($cnt=0 ; $cnt < (sizeof($in_code)-1)) ; $cnt++) //桁数分ループ
{
//ハイフンセット
$out_code .= $in_code[$cnt] . “-“;
}// 最後の文字列をセット
$out_code .= $in_code[(sizeof($in_code)-1)];
せっかくなので、関数化してみました。
汎用性を高めるために、桁数を任意の指定桁数、区切り文字を任意の文字にしてみました。
全角には対応していませんが、取り急ぎこんな感じになります。
function hyphen_set($code, $digit=4, $set_char=”-“)
{//出力コード初期化
$out_code = null;// コードを指定桁ごとに分割
$in_code = str_split($code, $digit);for($cnt=0 ; $cnt < (sizeof($in_code)-1)) ; $cnt++) //桁数分ループ
{
//ハイフンセット
$out_code .= $in_code[$cnt] . $set_char;
}// 最後の文字列をセット
$out_code .= $in_code[(sizeof($in_code)-1)];// 処理終了
return $out_code;
}