私は次のテキストを持っています:
<!--:en-->
<!--:-->
文字列(PHP)から抽出するパターンを構築したい。私は試してみます:
<!--:[a-z]{2}-->( \r\n\s)<!--:-->
しかし、それは機能しません、誰かが理由を知っているか、私を助けることができますか?
XML/HTMLの解析に正規表現を使用したくない場合があります。
そしてそれは多くの理由で。
代わりに、通常、この特定のタスク用に作成されたツールを使用して解析することをお勧めします。
とにかく、ここで必要なのは次のようなものです。
( |\s)*
ハイフンなどの特殊文字をエスケープする必要があります。これを試して:
/<\!\-{2}\:[a-z]{2}\-\->(( |\s)*)<\!\-{2}\:\-{2}>/
私があなたの質問を正しく理解した場合、コメントを含めてテキスト全体を一致させる必要があります。
だから、厳密にあなたの特定の問題については、私はそのようなものを使用します:
$s = "<!--:en-->
<!--:-->";
$a = array();
preg_match('/<!--:[a-z]{2}--> \\s+<!--:-->/', $s, $a);
for ($i = 0; $i < count($a); $i++) {
var_dump(htmlentities($a[$i]));
}
一般に、正規表現を使用してHTMLを解析する必要があるかどうかは疑問ではありませんが、Colinは、正規表現を使用してHTMLを実際に解析するのは非常に難しい(「ほぼ不可能」と読む)と言ったときに正しいことに注意してください。彼が状態を示した投稿。