Attention! Translated article might be found on my English blog.

2015年6月2日火曜日

preg_match_all()で行頭を検索する場合は/mを付ける

'/^hoge(.*)$/'
のように各行の行頭を検索してgrep的な使い方をしたかったのですが、
この場合は/m修飾子を付ける必要があるようです。

PHP: 正規表現パターンに使用可能な修飾子 - Manual
この修飾子を設定すると、「行頭」および「行末」メタ文字は 対象文字列において、文字列の最初と最後に加えて、 各改行の直前と直後にそれぞれマッチします。 

付けないと各行の行頭ではなく、文字列の先頭しかヒットしませんでした。
ご注意を。というかドキュメントちゃんと読んだ方が良いっすね…。