【PHP】文字列の中にある半角空白と全角空白を削除・除去する方法

公開日:
更新日:
カテゴリー: PHP

文字列の中にある半角空白と全角空白をPHPの関数を使ってすべて削除・除去する方法を説明しています。

「preg_replace」関数と「str_replace」関数を使えばすぐに実装できます。

preg_replace関数を使う場合

preg_replace関数を使う場合はこのようにします。

$string  = preg_replace("/( | )/", "", $string );

サンプルプログラム

半角空白と全角空白を含む文字列を準備し、preg_replace関数で削除・除去します。

<?php
//文字列
$string = "「 」←半角空白「 」←全角空白「   」←半角空白3つ「    」←全角空白4つ";

//文字列の中にある半角空白と全角空白をすべて削除・除去する
$string  = preg_replace("/( | )/", "", $string );

//出力
echo $string;
?>

このプログラムを実行すると、次のようになります。

「」←半角空白「」←全角空白「」←半角空白3つ「」←全角空白4つ

str_replace関数を使う場合

str_replace関数を使う場合はこのようにします。

$string = str_replace(array(" ", " "), "", $string);

サンプルプログラム

半角空白と全角空白を含む文字列を準備し、str_replace関数で削除・除去します。

<?php
//文字列
$string = "「 」←半角空白「 」←全角空白「   」←半角空白3つ「    」←全角空白4つ";

//文字列の中にある半角空白と全角空白をすべて削除・除去する
$string = str_replace(array(" ", " "), "", $string);

//出力
echo $string;
?>

このプログラムを実行すると、次のようになります。

「」←半角空白「」←全角空白「」←半角空白3つ「」←全角空白4つ

以上のようにすると、PHPで半角空白と全角空白を「置換」という形で除去できます。

どっちを使う?

半角空白と全角空白の削除は「preg_replace」関数と「str_replace」関数のどちらを使うべきか?ですが、特に理由がない場合はstr_replace関数を使う方法が良いです。

それは、preg_replace関数は正規表現を使った置換にも対応しているため、処理の速度的にもメモリ的にも(正規表現を使わないのであれば)str_replace関数の方が優位性があります(簡易なプログラムではまったく考慮しなくて良いレベルだと思いますが・・・)。

なお、str_replace関数のリファレンスにも

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

と、「正規表現を使わないのであれば俺を使え!」と記述されています。

削除・除去ではなく「_」に置換する

半角空白と全角空白が邪魔だけど、削除をしてしまうと都合が悪くなる場合は、それらを「_」で置換するとよいです。具体的にはこのようにすればよいです。

preg_replace関数の場合

//文字列の中にある半角空白と全角空白を「_」に置換
$string  = preg_replace("/( | )/", "_", $string );

str_replace関数

//文字列の中にある半角空白と全角空白を「_」に置換
$string = str_replace(array(" ", " "), "_", $string);

これを実行すると、

「_」←半角空白「_」←全角空白「___」←半角空白3つ「____」←全角空白4つ

のようになります。

もし「_」が多くなりすぎて邪魔な場合は、preg_replace関数の正規表現(一回以上の繰り返しを意味する量指定子の「+」とマルチバイト文字に対応させる修飾子「u」)を使ってこのようにすればよいです。

<?php
//文字列
$string = "「 」←半角空白「 」←全角空白「   」←半角空白3つ「    」←全角空白4つ";
 
//文字列の中にある半角空白と全角空白を「_」(一つだけ!)に置換
$string  = preg_replace("/( | )+/u", "_", $string );
 
//出力
echo $string;
?>

これを実行すると、

「_」←半角空白「_」←全角空白「_」←半角空白3つ「_」←全角空白4つ

のようになります。

 

頑張って書いたのでちょろっと読んでほしい!

 

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント