1

私は次のテキストを持っています:

<!--:en-->&nbsp;

<!--:-->

文字列(PHP)から抽出するパターンを構築したい。私は試してみます:

<!--:[a-z]{2}-->(&nbsp;\r\n\s)<!--:-->

しかし、それは機能しません、誰かが理由を知っているか、私を助けることができますか?

4

3 に答える 3

3

XML/HTMLの解析に正規表現を使用したくない場合があります。

そしてそれは多くの理由で。

代わりに、通常、この特定のタスク用に作成されたツールを使用して解析することをお勧めします。


とにかく、ここで必要なのは次のようなものです。

(&nbsp;|\s)*
于 2012-04-11T14:40:02.857 に答える
1

ハイフンなどの特殊文字をエスケープする必要があります。これを試して:

/<\!\-{2}\:[a-z]{2}\-\->((&nbsp;|\s)*)<\!\-{2}\:\-{2}>/
于 2012-04-11T14:42:42.120 に答える
1

私があなたの質問を正しく理解した場合、コメントを含めてテキスト全体を一致させる必要があります。

だから、厳密にあなたの特定の問題については、私はそのようなものを使用します:

$s = "<!--:en-->&nbsp; 

<!--:-->";

$a = array();
preg_match('/<!--:[a-z]{2}-->&nbsp;\\s+<!--:-->/', $s, $a);

for ($i = 0; $i < count($a); $i++) {
  var_dump(htmlentities($a[$i]));
}

一般に、正規表現を使用してHTMLを解析する必要があるかどうかは疑問ではありませんが、Colinは、正規表現を使用してHTMLを実際に解析するのは非常に難しい(「ほぼ不可能」と読む)と言ったときに正しいことに注意しください。彼が状態を示した投稿。

于 2012-04-11T16:20:58.937 に答える