2017-01-30 3 views
-1

私はそれにいくつかのhtmlタグを持っている文字列を持っています。開始タグと終了タグを見つけて、欠落しているタグを追加できるようにしたい。 例えば、私はこの文字列を持って言うことができます:文字列を反復処理中に開閉タグを作成できますか?

Hello <strong>from <em>StackOverflow</strong> Hows it going</em>. 

私は決算</strong>前に最初の<em>を閉じ、右の終値</strong>後に開口部<em>を追加できるようにしたいです。 どのタグが含まれているかはわかりますが、指定された文字列には開閉タグが混在していることがあります。

DOMParserまたはinnerHTMLの助けを借りずにこれをどう処理できますか?

基本的には、文字列を繰り返したいと思っています。<に出くわしたら、オープニング文字列を開始し、>で閉じたいと思います。次に、</にアクセスして終了タグ>を終了したいと思います。

問題は、文字列を反復処理するときに、一度に1つの文字をチェックすることによって常に開始タグを開始するということですか?どのように私は繰り返しながら私の文字列からこれらのタグを構築できますか?

+0

このパスを下る前に、[canonical/obligatory answer](http://stackoverflow.com/a/1732454/1715579)をお読みください。 –

+0

今質問を更新しました – jmcgui05

+2

[Javascript:開いているHTMLタグを文字列で閉じる](http://stackoverflow.com/questions/14749078/javascript-close-open-html-tags-in-a-)文字列) – VladGincher

答えて

0

開始タグと終了タグ両方が(<.+?>)のような正規表現をJavaScriptでですが、正規表現後方参照を考慮すると、JavaScriptでサポートされていない、何を求めていることにより、そのあなた'LL事実に、おそらく不可能である場所を見つけることができますどちらの開始タグがどの開始タグと相関しているか決して決めることはできません。

希望すると便利です。

+0

まあ、私の考えは、スタックにタグをプッシュすることでした。それから、私はタグのタイプをチェックすることができます。 '強い'などです。もし私がそれに対応する開始タグに終了タグを押しているならば、それは間違ったhtmlではないので、しかし、閉じた ''を開いている ''にプッシュしている場合は、そのインデックスの文字列に ''というクローズを追加する必要があることがわかります。それは狂った考えですか? – jmcgui05

+1

その問題は、ネストされたタグが**同じ**タイプを持つことができることです。たとえば、div内にdivを含めることができます。 [ここのコメント](http://stackoverflow.com/questions/37823200/final-solution-for-using-regex-to-remove-html-nested-tags-of-the-same-type)が役立つかもしれませんその点で –

関連する問題