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">'<p>Hello <b>world</b>!</p>'</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構造を扱う場合、 Strip_Tags()の動作には特別な注意が必要です。 HTML構造が標準化されていない場合、またはタグが深くネストされている場合、 Strip_Tags()を使用すると、予想される結果が得られない場合があります。たとえば、ネストされたタグにより、一部のタグが完全に削除されない場合や、処理された文字列形式が予想されない場合があります。
ネストされたHTMLタグは、仕様に準拠していない場合があり、 Strip_Tags()が適切に機能しないようにすることがあります。この問題を解決するには、まずHTMLコードが仕様であることを確認する必要があります。 HTML構造は、PHPのDomdocumentクラスを使用してロードして正規化できます。
<span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">'<div><b>Hello <i>world</i></b>!</div>'</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>-></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>-></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番目のパラメーターを介して保持できるタグを指定できます。たとえば、 <b>および<i>タグのみを保持したい場合は、他のすべてのタグを削除します。
<span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">'<p><b>Hello <i>world</i>!</b></p>'</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">'<b><i>'</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 <i>world</i>!</span></span><span>
</span></span>
このようにして、 Strip_Tags()は許容リストにないすべてのタグを削除し、他のタグからの干渉を避けるために<b>および<i>タグのみが保持されます。
特に複雑なHTML構造を扱う場合、 Strip_tags()のみに依存するだけでは十分にはない場合があります。この時点で、正規表現と組み合わせて文字列をさらにクリーニングし、ネストされたタグやその他の不要な部分を削除できます。
<span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">'<div><b>Hello <i>world</i></b>!</div>'</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">'<b><i>'</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">'/<[^>]+>/'</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