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

この記事は次のブログに引っ越しました。

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」という結果になることです。