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

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

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

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

————————————–

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

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

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

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

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

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