PHPで数字の先頭に 半角スペース を付ける方法

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

PHPで数値の前に空白を入れる

文字と数字が空白なしで並ぶ文字列は時として読みづらいことがあります。

空白なし:スバラシティビル3階104号室
空白あり:スバラシティビル 3階 104号室

読みづらい以外にWebAPI系に住所データを渡す際にもAPI側が区切りがわからず精度が下がるというデメリットもあります。

例えば、GoogleMapsなどに住所を渡す際、該当するビル名が地図情報に含まれていると精度が上がるのですが、そのビル名に階数や部屋番号などが「スペースなし」で繋がっている場合に正常に認識できなかったりします。

お客様の入力した住所からGoogleMapでも表示してGPSなどの座標情報も取得したいといった場合、これだけの差で精度が下がるのはもったいない。しかし、入力フォームに項目を細かく分けすぎてしまうことでお客様の利便性を損なうという、トレードオフ的なジレンマがあると思います。

さて、このような空白を加える処理はPHPでも正規表現を使うのが楽なのですが、その場合単純に”preg_replace”を使うと脆弱性が発生するので”preg_replace_callback”を使ってみます。

変換前:スバラシティビル3階104号室
変換後:スバラシティビル 3階 104号室
<?php
function fAddSpaceBeforeNum( $s ){
$s = preg_replace_callback(
'|(\d+)|',
function( $matches ) {
return " " . ( $matches[0] ); //頭に空白を足す
},
$s
);
return $s;
}

注意点としては「5-4-3」という場合に「 5- 4- 3」という結果になることです。

関連記事

Geeklogの管理画面で記事一覧に列を追加する... Geeklogで記事一覧に任意の列を追加する方法 わたくし、Geeklogの記事管理画面(story.php)で記事一覧を表示する際に、編集アイコン列の隣に新しい列を挿入したかったんです。 結論 story.phpで列の定義を行い、lib-admin.phpで各行の処理を定義する。 ...
PHPで画像を動的に出力する際にキャッシュさせない... PHPのGDを使って合成した画像を出力するスクリプトを作って、テスト用にタグをたくさんならべて、変化をチェックしてみた。 しかし、URLが変わらないためか、いくつかの画像が表示しきれなかったり、他と同じだったり・・・ 単発でスクリプトを叩くと、ちゃんと表示されるので...
PHPの多次元連想配列をマージする 添え字付き多次元配列の結合 一般的に配列のマージ(結合)は"+"(プラス)を使うのが一番簡単だったりするのですが、一部のキーが同じ(添え字のダブりがある)配列を結合する場合に、いささか問題がおきるケースがあります。 array_merge_recursive()関数や array_d...
Google App EngineでPHPを動かす?! "PHP Classes"のメーリングリストで、Google App EngineでPHPを動かしてみるといったポストがあったので、面白そうだと思って読みに行ってみた。 Running PHP on Google App Engine - PHP Classes blog 従来Pyt...

スポンサーリンク
レクタングル(大)広告

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク
レクタングル(大)広告