作業用メモ:PHP 正規表現で文字列を置換する関数preg_replace()
作業用メモ
PHPで、正規表現で条件を指定して文字列の置換をしたい場合、
PHPには、preg_replace()という関数が準備されています。
1
|
preg_replace(引数1, 引数2, 引数3, 引数4(省略可)) |
- 引数1…検索するパターン。正規表現で指定する。
- 引数2…置換後のテキストを指定する。
- 引数3…置換前の元テキスト
- 引数4…置換を行う最大回数(省略可)
preg_replace()で文字列を置換してみる
まずは、試しにpreg_replace()を使って文字列を置換してみる。
文字列「進撃の巨乳」を「進撃の巨人」に修正したい為、
「巨乳」→「巨人」に置換してみる。
1
2
3
4
5
6
7
8
9
10
|
// 変数代入 $string = '進撃の巨乳' ; $pattern = '/巨乳/' ; $replacement = '巨人' ; // ①置換前 echo $string ; // ②置換後 echo preg_replace( $pattern , $replacement , $string ); |
- ①置換前:進撃の巨乳
- ②置換後:進撃の巨人
preg_replace()は指定文字列すべてが対象
引数4で置換を行う回数を指定しない限りは、
全ての指定文字列が置換の対象となります。
1
2
3
4
5
6
7
8
9
|
$string = '巨乳好きな俺の彼女も、巨乳な彼女の巨乳の友達も「進撃の巨乳」が好き。' ; $pattern = '/巨乳/' ; $replacement = '巨人' ; // ①置換前 echo $string ; // ②置換後 echo preg_replace( $pattern , $replacement , $string ); |
- ①置換前:巨乳好きな俺の彼女も、巨乳な彼女の巨乳の友達も「進撃の巨乳」が好き。
- ②置換後:巨人好きな俺の彼女も、巨人な彼女の巨人の友達も「進撃の巨人」が好き。
preg_replace() 正規表現で置換文字列の条件を指定
preg_replace()は指定文字列すべてが対象となってしまう為、
特定の文字列のみ置換の対象としたい場合は、正規表現で条件を指定します。
例えば、”巨乳好きな俺の彼女も、巨乳な彼女の巨乳の友達も「進撃の巨乳」が好き。”
という文字列のうち、行の最初の「巨乳」のみを「巨人」に変更したい場合の例。
“行の最初に一致する文字列”という条件指定’^'を使います。
例えば今回の文字列の”行の最初に一致する文字列”を指定したい場合は、
‘/^巨乳/’と記述します。
1
2
3
4
5
6
7
8
9
|
$string = '巨乳好きな俺の彼女も、巨乳な彼女の巨乳の友達も「進撃の巨乳」が好き。' ; $pattern = '/^巨乳/' ; $replacement = '巨人' ; // ①置換前 echo $string ; // ②置換後 echo preg_replace( $pattern , $replacement , $string ); |
- ①置換前:巨乳好きな俺の彼女も、巨乳な彼女の巨乳の友達も「進撃の巨乳」が好き。
- ②置換後:巨人好きな俺の彼女も、巨乳な彼女の巨乳の友達も「進撃の巨乳」が好き。
preg_replace()は正規表現で(○○~始まる)置換文字列を指定
たくさんの文字列”巨乳”がある中から、
“進撃の巨乳”のみ”進撃の巨人”に置換したい場合の例。
単純に”進撃の巨乳”→”進撃の巨人”に置換してもよいのですが、それでは面白くないので、
preg_replace()で準備されている特殊機能を使ってみます。
preg_replace()の引数2では$n形式で()内の文字列をサブパターンとして持つ事ができます。
1つ目の()は$1、2つ目の()は$2といった感じです。
1
2
3
4
5
6
7
8
9
|
$string = '巨乳好きな俺の彼女も、巨乳な彼女の巨乳の友達も「進撃の巨乳」が好き。進撃の巨乳も巨乳もだぁいすき!' ; $pattern = '/(進撃の)巨乳/' ; $replacement = '$1巨人' ; // ①置換前 echo $string ; // ②置換後 echo preg_replace( $pattern , $replacement , $string ); |