PHPの正規表現の実用例まとめ

PHPで正規表現を触るときに毎回調べてたりするのが面倒になってきたのでメモ書きとして残しておきます。

改行にまたがった文字列を取り出す方法

<div class="sample">
  aaa
</div>

このようなhtmlがあり、「aaa」を取り出したいとする。その場合は以下のコードで対応可能。

preg_match_all("/<div>(.*)<\/div>/s", $content, $matches);

/の後にオプションを付けることができ、sを付けることで改行をまたいで一致する文字列を探してくれる。

最短の一致文字列の取り出し

<div class="sample">
  aaa
</div>
<div class="sample">
  bbb
</div>

例えば上記のようなhtmlがあり、classのdivタグの中身をそれぞれ取り出したいとする。

この例だと、取り出したい値は「<div class=”sample”>aaa</div>」「<div class=”sample”>bbb</div>」である。

preg_match_all("/<div>.*<\/div>/s", $content, $matches);

先程と同じように/sのオプションを付けて取り出しを行おうとすると、最初に見つかったdivタグから最後のdivタグまでを取得してしまうため、上記のサンプルが丸々取得されてしまう。

preg_match_all("/<div>.*?<\/div>/s", $content, $matches);

こういう場合においては、「.*」ではなく「.*?」で最短に一致した文字列だけを取り出すことができる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です