PHPで文字列の置換をする関数のメモ。
比較
- 通常の置換の場合は、str_replace
- 正規表現を用いた置換の場合は、preg_replace
- 正規表現を用いた置換をマルチバイト文字列に行う場合は、mb_ereg_replace
「str_replace」の使い方
str_replace(
- 検索する文字列,
- 置き換える文字列,
- 置換対象の文字列,
- ※置換した箇所の個数を格納する変数 …※未指定OK
);
戻り値は、置換後の文字列。
サンプルコード
$str = str_replace("あ", "★", "あいうえおあいうえお", $count);
echo $str; // $str = ★いうえお★いうえお
echo $count; // $count = 2
「preg_replace」の使い方
preg_replace(
- 検索する文字列,
- 置き換える文字列,
- 置換対象の文字列,
- ※置き換えを行う最大回数(-1:制限なし), …※未指定OK
- ※置換した箇所の個数を格納する変数 …※未指定OK
);
戻り値は、置換後の文字列。
サンプルコード
$str = preg_replace("(,\s)", "★", "あいうえお,あいうえお, あいうえお, あいうえお", 1, $count);
echo $str; // $str = あいうえお,あいうえお★あいうえお, あいうえお
echo $count; // $count = 1
「半角カンマ+半角空白 "(,\s)" 」を「★」に置換しています。
4番目の引数に「1」を指定しているので、最初にマッチした1箇所のみが置換されています。
「mb_ereg_replace」の使い方
mb_ereg_replace(
- 検索する文字列,
- 置き換える文字列,
- 置換対象の文字列,
- ※検索オプション(1文字、複数指定OK), …※未指定OK
);
戻り値は、置換後の文字列。
todo: 検索オプションの詳細を調べる。
サンプルコード
$str = mb_ereg_replace("[^ -~]", "★", "abcあABCい123");
echo $str; // $str = abc★ABC★1★3
文字列「abcあABCい123」がマルチバイト文字列の場合の置換です。
半角英数記号以外の文字を「★」に置換しています。
「あ」「い」「2」が全角のため置換されています。
todo: マルチバイト用の置換……文字コードむずかしい。