preg_replaceとmb_ereg_replaceどっちを使うか。
後方参照を使いたいならpreg_replace
使う必要がないなら好きな方で。
preg_replace
- 置換パターンは文字列もしくは配列
- 置換対象は文字列もしくは文字列の配列
- 返り値
- 結果の文字列(マッチするものがなければそのまま)
- エラー時に
NULL
を返す - 引数が配列の場合は配列
- 後方参照が使える
${0}${1}
${99}
までは存在しない場合は空文字として認識される(エラーは出ない)
${99} → ''
${100} → '${100}'
$100 → '0'
${10}
と'0'
に認識される ${10}
が存在しなければ'0'
に認識される
mb_ereg_replace
- 置換パターンは文字列
- 置換対象は文字列
- 返り値
- 結果の文字列(マッチするものがなければそのまま)
- エラー時に
FALSE
を返す - パターン修飾子を設定する部分(
//u
)が不要 - 後方参照が出来なかった
preg_replaceの動作例
preg_replace('/b(c)/u', '${0}${1}', 'abcdef1');
// string(8) "abccdef1"
preg_replace('/b/u', '', 'abcdef1');
// string(6) "acdef1"
preg_replace('/b/u', '', ['abcdef1', 'abcdef2']);
/*
array(2) {
[0]=>
string(6) "acdef1"
[1]=>
string(6) "acdef2"
}
*/
preg_replace(['/b/u', '/d/u'], ['B', 'D'], ['abcdef1', 'abcdef2']);
/*
array(2) {
[0]=>
string(7) "aBcDef1"
[1]=>
string(7) "aBcDef2"
}
*/
preg_replace(['/b/u', '/d/u'], ['B'], ['abcdef1', 'abcdef2']);
/*
array(2) {
[0]=>
string(6) "aBcef1"
[1]=>
string(6) "aBcef2"
}
*/
preg_replace(['/b/u'], ['B', 'D'], ['abcdef1', 'abcdef2']);
/*
array(2) {
[0]=>
string(7) "aBcdef1"
[1]=>
string(7) "aBcdef2"
}
*/
preg_replace(['/b/u', '/d/u'], '', ['abcdef1', 'abcdef2']);
/*
array(2) {
[0]=>
string(5) "acef1"
[1]=>
string(5) "acef2"
}
*/