この記事について
| 環境 | PHP |
|---|---|
| 目的 | ある文字列を含む行だけを削除する |
| 結果 | preg_replace(‘/^.*削除する.*$/um’, ”, $honbun) のように修飾子mを付ける |
つまずきポイント要約
- 修飾子m(マルチラインモード)がないと2行目以降の^がマッチしないケースがある
ある文字列を含む行だけを削除する正規表現の覚書
次のようなテキストの場合
ここは残す行
ここは削除する行
ここは削除する行
ここは残す行
「削除する」というワードが含まれている行をなくしたいので、正規表現は次のようになる
//行頭から改行コードまでを空文字に置き換える
preg_replace(‘/^.*削除する.*[\r\n]/u’,”,$honbun);
これではうまくいかない場合がある。二行目以降の^がマッチしないケース。
次の書き方ならうまくいく。
preg_replace(‘/^.*削除する.*$/um’,”,$honbun);
ポイントは、修飾子m。マルチラインモードにすることで、文章途中の^や$がマッチして期待した動作になる。
