現在の位置: ホーム> 最新記事一覧> Strip_Tags関数を使用して、ネストされたHTMLタグを含む文字列を処理してタグ干渉を回避する方法は?

Strip_Tags関数を使用して、ネストされたHTMLタグを含む文字列を処理してタグ干渉を回避する方法は?

gitbox 2025-06-22

sprip_tags()関数の基本的な使用

Strip_Tags()関数の関数は、文字列からすべてのHTMLおよびPHPタグを削除することです。その基本的な構文は次のとおりです。

 <span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span>|</span><span><span class="hljs-literal">null</span></span><span> </span><span><span class="hljs-variable">$allowable_tags</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>
  • $ str :処理する文字列。

  • $ Allowable_Tags :許可されているタグを指定するオプションのパラメーター。指定されていない場合、すべてのタグはデフォルトで削除されます。

例:

 <span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">'&lt;p&gt;Hello &lt;b&gt;world&lt;/b&gt;!&lt;/p&gt;'</span></span><span>;
</span><span><span class="hljs-variable">$clean_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>(</span><span><span class="hljs-variable">$html</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$clean_text</span></span><span>;  </span><span><span class="hljs-comment">// 出力:Hello world!</span></span><span>
</span></span>

上記のように、 sprip_tags()はデフォルトですべてのHTMLタグを削除します。文字列にネストされたタグが含まれている場合、削除が正しく、エラーがないことをどのように確認しますか?


ネストされたHTMLタグを処理するためのヒント

複雑なHTML構造を扱う場合、 Strip_Tags()の動作には特別な注意が必要です。 HTML構造が標準化されていない場合、またはタグが深くネストされている場合、 Strip_Tags()を使用すると、予想される結果が得られない場合があります。たとえば、ネストされたタグにより、一部のタグが完全に削除されない場合や、処理された文字列形式が予想されない場合があります。

1. HTMLタグ構造の仕様を確認します

ネストされたHTMLタグは、仕様に準拠していない場合があり、 Strip_Tags()が適切に機能しないようにすることがあります。この問題を解決するには、まずHTMLコードが仕様であることを確認する必要があります。 HTML構造は、PHPのDomdocumentクラスを使用してロードして正規化できます。

 <span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">'&lt;div&gt;&lt;b&gt;Hello &lt;i&gt;world&lt;/i&gt;&lt;/b&gt;!&lt;/div&gt;'</span></span><span>;
</span><span><span class="hljs-variable">$dom</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DOMDocument</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">libxml_use_internal_errors</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>);  </span><span><span class="hljs-comment">// 怠慢HTMLフォーマットのエラー</span></span><span>
</span><span><span class="hljs-variable">$dom</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">loadHTML</span></span><span>(</span><span><span class="hljs-variable">$html</span></span><span>);
</span><span><span class="hljs-variable">$clean_html</span></span><span> = </span><span><span class="hljs-variable">$dom</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">saveHTML</span></span><span>();
</span><span><span class="hljs-variable">$clean_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>(</span><span><span class="hljs-variable">$clean_html</span></span><span>);  </span><span><span class="hljs-comment">// 使用strip_tagsタグを削除します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$clean_text</span></span><span>;  </span><span><span class="hljs-comment">// 出力:Hello world!</span></span><span>
</span></span>

DomDocumentを介して、最初にHTMLコードをロードして修復し、次にStrip_Tags()関数を使用してタグをクリーンアップできます。

2。いくつかのタグを保持します

特定のタグのみを保持する必要がある場合は、2番目のパラメーターを介して保持できるタグを指定できます。たとえば、 <b>および<i>タグのみを保持したい場合は、他のすべてのタグを削除します。

 <span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">'&lt;p&gt;&lt;b&gt;Hello &lt;i&gt;world&lt;/i&gt;!&lt;/b&gt;&lt;/p&gt;'</span></span><span>;
</span><span><span class="hljs-variable">$clean_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>(</span><span><span class="hljs-variable">$html</span></span><span>, </span><span><span class="hljs-string">'&lt;b&gt;&lt;i&gt;'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$clean_text</span></span><span>;  </span><span><span class="hljs-comment">// 出力:Hello &lt;i&gt;world&lt;/i&gt;!</span></span><span>
</span></span>

このようにして、 Strip_Tags()は許容リストにないすべてのタグを削除し、他のタグからの干渉を避けるために<b>および<i>タグのみが保持されます。

3.正規表現と組み合わせて冗長タグをフィルターします

特に複雑なHTML構造を扱う場合、 Strip_tags()のみに依存するだけでは十分にはない場合があります。この時点で、正規表現と組み合わせて文字列をさらにクリーニングし、ネストされたタグやその他の不要な部分を削除できます。

 <span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">'&lt;div&gt;&lt;b&gt;Hello &lt;i&gt;world&lt;/i&gt;&lt;/b&gt;!&lt;/div&gt;'</span></span><span>;
</span><span><span class="hljs-variable">$clean_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>(</span><span><span class="hljs-variable">$html</span></span><span>, </span><span><span class="hljs-string">'&lt;b&gt;&lt;i&gt;'</span></span><span>);  </span><span><span class="hljs-comment">// 最初に不要なタグを削除します</span></span><span>
</span><span><span class="hljs-variable">$clean_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-string">'/&lt;[^&gt;]+&gt;/'</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-variable">$clean_text</span></span><span>);  </span><span><span class="hljs-comment">// 通常のものを使用して、残りのものを削除しますHTMLラベル</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$clean_text</span></span><span>;  </span><span><span class="hljs-comment">// 出力:Hello world!</span></span><span>
</span></span>

この方法により、タグをクリーンアップする過程で、より洗練される可能性があります。

  • 関連タグ:

    HTML