【PHP】ある文字列を含む行だけを削除する正規表現

この記事について

環境PHP
目的ある文字列を含む行だけを削除する
結果preg_replace(‘/^.*削除する.*$/um’, ”, $honbun) のように修飾子mを付ける

つまずきポイント要約

  • 修飾子m(マルチラインモード)がないと2行目以降の^がマッチしないケースがある

ある文字列を含む行だけを削除する正規表現の覚書

次のようなテキストの場合

ここは残す行
ここは削除する行
ここは削除する行
ここは残す行

「削除する」というワードが含まれている行をなくしたいので、正規表現は次のようになる

//行頭から改行コードまでを空文字に置き換える
preg_replace(‘/^.*削除する.*[\r\n]/u’,”,$honbun);

これではうまくいかない場合がある。二行目以降の^がマッチしないケース。
次の書き方ならうまくいく。

preg_replace(‘/^.*削除する.*$/um’,”,$honbun);

ポイントは、修飾子m。マルチラインモードにすることで、文章途中の^や$がマッチして期待した動作になる。

関連記事

タイトルとURLをコピーしました