私は、文字列で閉じられていないHTMLタグを見つけるために、PHPや正規表現を使用しています:マッチ閉じられていないHTMLタグを正規表現を使用してPHP
これは私の文字列です:
$s="<div><h2>Hello world<h2><p>It's 7Am where I live<p><div>";
あなたがここにすべてのタグはありません見ることができます閉まっている。
閉じられていないタグをすべて検索したいのですが、問題は私の正規表現が開始タグと一致していることです。ここで
は、これまで
/<[^>]+>/i
そして、この私のpreg_match_allである()関数
preg_match_all("/<[^>]+>/i",$s,$v);
print_r($v);
私の正規表現である私は閉じられていないタグを一致させるために、私の正規表現に変更するには何が必要ですか?
<h2>
<p>
<div>
あなたは 'tidy' http://php.net/manual/en/book.tidy.php – cmorrissey
自己開発されたソリューションになります教育目的のために:基本的にタグ(開閉)とその他のテキスト断片を識別するトークナイザを構築する。開いたタグを保持しているスタックにトークンを繰り返します。開始タグがある場合は、それをスタックに配置します。終了タグがある場合は、相手がスタックの一番上にあるかどうかをチェックします。一致する場合は、スタックからスタックタグを削除します。それに応じて対応する(例えば、エラーを投げたり、遭遇した終了タグを破棄する)。 – Gumbo
これは正規表現とは異なります。 – Brandin