
テキストに対して、grepのようなことってあまりやったことがなくて、今回たまたま必要になったので、調べてみたことを記録しておきます。要は、正規表現を使ってマッチした行を消すか、マッチしなかった行を消すかで、残すか、消すか、どちらにもころべるところがよかったです。
preg_replaceのオプションにm(multi line?)を使って置換する
neko 含む行だけ、テキストから抜き出してみます
$str='
inu
neko
uma
saru
';
echo preg_replace("/^(?!.*neko).*$/m","",$str);
/*
結果
neko
*/
次は、neko以外の行だけを取り出します。nekoが含んでいる行を削除しつつ、改行も削除しないといけないことに注意します。
$str='
inu
neko
uma
saru
';
echo preg_replace("/^.*neko.*[\r\n]/m","",$str);
/*
結果
inu
uma
saru
*/
はい、うまくいきました。
スクレイピングとかする人に結構使えそうな感じですね。メモメモ