1

preg_match()とdeprecatedの構文ereg()が異なることがわかりました。
例えば:

と思いました

preg_match('/^<div>(.*)</div>$/', $content);

と同じ意味

ereg('^<div>(.*)</div>$', $content);

しかし、私は間違っていました。preg_match()enter like のような特殊文字は含まれませんereg()

だから私はこの構文を使い始めました:

preg_match('/^<div>([^<]*)</div>$/', $content);

しかし、それは私が必要とするものとまったく同じではありません。

非推奨の関数を使用せずに、この問題を解決する方法を誰かに提案できますか?

4

1 に答える 1

1

HTMLを解析するには、この質問を読んで、組み込みのPHP拡張機能を選択することをお勧めします。

何らかの理由でRegExを使用する必要がある、または使用したい場合は、次のことを知っておく必要があります。

  • preg_match()貪欲な小さなバガーであり、病気になるまで(つまり、再帰またはバックトラックの制限に達するまで)何でも 食べようとします。(.*)これはU修飾子1で変更します。

  • エンジンは単一のラインに供給されることを期待しています。これは、mまたはs修飾子1を使用して変更します。

  • ' not <文字'ハックを使用すると、エンジンが最初の< charで([^<]*)停止するため、適切に機能しますが、に他のタグが含まれていない場合にのみ機能します。<div>

参照:1つ のPCREパターン修飾子

于 2013-01-10T11:46:37.150 に答える