PHP
正規表現

【PHP】空白を削除しつつ全角文字を半角文字に変換する

空白を削除しつつ全角文字を半角に変換したい

  • 空白スペースを削除
  • 全角文字を半角文字へ変換

の順番で処理を行う

preg_replaceを使用する方法

以下のような文字列から空白スペースを取り除きかつすべて半角文字に変換する

コード

<?php

$code = ' ABC DEF G 1234 567 8 ABCD 12345 ';

$print = preg_replace('/( | )/', '', mb_convert_kana($code, 'a', 'UTF-8'));

var_dump($print);

↓出力結果

string(24) "ABCDEFG12345678ABCD12345"

処理の内容

  • mb_convert_kanaのオプション(以下 PHP: mb_convert_kana - Manual から引用)

    • a 「全角」英数字を「半角」に変換します
  • preg_replace

    • 単純に半角スペースまたは全角スペースを空文字に変換しているだけ

str_replaceを使用する方法

しかしながら公式のドキュメントでは以下のように書かれている

PHP: str_replace - Manual

(正規表現のような) 技巧的な置換ルールを必要としない場合、 preg_replace() の代わりにこの関数を常用するべきです。

のでstr_replaceを使用した方がいいようです。

コード

<?php
$code = ' ABC DEF G 1234 567 8 ABCD 12345 aaaああ ああ  ';

$print = str_replace([' ',' '], '', mb_convert_kana($code, 'a', 'UTF-8'));

var_dump($print);

↓出力結果

string(39) "ABCDEFG12345678ABCD12345aaaああああ"

参考