0


0

htmlに欠落しているタグの終了タグを挿入する

終了タグが欠落している場所に終了HTMLタグを挿入する方法は?

Like

 Index No.

Name

1

ハリクリシュナ

2つの欠落している終了タグ。それは「/ tr」です。この場合、欠落しているタグの場所を検索する方法と、「/ tr」などの適切な終了タグを挿入する方法です。

3 Answer


2


これは、考えられるすべてのケースを処理する場合に実行する非常にタスクのようです。 HTMLは通常の言語ではありません。 私見では、ソースでの問題を解決しようとする必要があります。最初に無効なHTMLを取得した方法です。


1


HTML Tidyを見て、必要なものが機能するかどうかを確認してください。


1


上記についてはコメントできないので、ここで書き留めておきます。 HTMLフラグメントのクリーニングにも* HTML Tidy *を使用できます。 こちらの例をご覧ください:+ http://www.php.net/manual/en/tidy.examples.basic.phphttp://www.php.net/manual/en/tidy.examples.basic.php

HTML Tidyに代わる方法は、*正規表現*で出力コードをきれいにすることです-以下に例を示します。 ただし、これは処理の点では高速かもしれませんが、HTML Tidyほど普遍的ではなく(保守的に)堅牢ではないことに注意してください。

コード

Index No.

Name

0

FooBaz

1

ハリクリシュナ

2

Foo

3

Bar

"; //正規表現の魔法$ start_cond ="] )?> "; $ end_cond ="(?:\ {$ start_cond} | <\ / table>) "; $ row_contents ="(?:(?!\ { $ end_cond})。) "; //最初にすべてを削除

タグ$ xhtml = preg_replace( "/ <\ / tr> / ism"、 ""、$ html); //再追加

適切なタグ$ xhtml = preg_replace( "/(\ {$ start_cond})(\ {$ row_contents})/ ism"、 "$ 1 $ 2

\ n "、$ xhtml); //無視:比較出力エコーを書き込むためだけに"

前:

"; show_count($ html); echo"

後に

"; show_count($ xhtml); function cmp($ patt、$ html)\ {$ count = preg_match_all(" / \ {$ patt} / ism "、$ html、$ matches); return htmlentities(" \ n \ { $ count} x \ {$ patt} ");} function show_count($ html)\ {echo"

"
        . cmp("]*)?>",$html)
        . cmp("<\/tr>",$html)
        . "

";}?>

出力

Before:
5 x ]*)?>
1 x <\/tr>

After
5 x ]*)?>
5 x <\/tr>