Position actuelle: Accueil> Derniers articles> Comment utiliser la fonction strip_tags pour traiter les chaînes contenant des balises HTML imbriquées pour éviter les interférences de balises?

Comment utiliser la fonction strip_tags pour traiter les chaînes contenant des balises HTML imbriquées pour éviter les interférences de balises?

gitbox 2025-06-22

Utilisation de base de la fonction strip_tags ()

La fonction de la fonction strip_tags () consiste à supprimer toutes les balises HTML et PHP de la chaîne. Sa syntaxe de base est la suivante:

 <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 : Une chaîne à traiter.

  • $ adulable_tags : un paramètre facultatif qui spécifie les balises autorisées à conserver. S'il n'est pas spécifié, toutes les balises sont supprimées par défaut.

exemple:

 <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">// Sortir:Hello world!</span></span><span>
</span></span>

Comme indiqué ci-dessus, strip_tags () supprime toutes les balises HTML par défaut. Ainsi, lorsqu'une chaîne contient des balises imbriquées, comment vous assurez-vous que le retrait est correct et qu'il n'y a pas d'erreur?


Conseils pour gérer les balises HTML imbriquées

Lorsque vous traitez avec des structures HTML complexes, le comportement de strip_tags () nécessite une attention particulière. Si la structure HTML n'est pas standardisée ou si les balises sont imbriquées trop profondément, l'utilisation de strip_tags () peut ne pas obtenir les résultats attendus. Par exemple, les balises imbriquées peuvent entraîner la suppression de certaines balises, ou le format de chaîne traité n'est pas comme prévu.

1. Assurer les spécifications de la structure des balises HTML

Les balises HTML imbriquées peuvent parfois ne pas se conformer aux spécifications, ce qui a permis de ne pas fonctionner correctement. Pour résoudre ce problème, vous devez d'abord vous assurer que le code HTML est une spécification. La structure HTML peut être chargée et normalisée en utilisant la classe DomDocument de PHP.

 <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">// négligenceHTMLErreur dans le format</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">// utiliserstrip_tagsSupprimer les balises</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">// Sortir:Hello world!</span></span><span>
</span></span>

Grâce à DomDocument , nous pouvons d'abord charger et réparer le code HTML, puis utiliser la fonction strip_tags () pour nettoyer les balises.

2. Permettez à certaines balises d'être conservées

Si seuls certaines balises doivent être conservées, vous pouvez spécifier les balises qui peuvent être conservées via le deuxième paramètre. Par exemple, si vous souhaitez seulement conserver les balises <b> et <i> , supprimez toutes les autres balises:

 <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">// Sortir:Hello &lt;i&gt;world&lt;/i&gt;!</span></span><span>
</span></span>

De cette façon, strip_tags () supprimera toutes les balises qui ne sont pas dans la liste autorisée, et seules les balises <b> et <i> sont conservées pour éviter les interférences des autres balises.

3. Filtrez les étiquettes redondantes en combinaison avec des expressions régulières

Parfois, s'appuyer sur strip_tags () seul peut ne pas être assez bien, surtout lorsqu'il s'agit de structures HTML complexes. À ce stade, nous pouvons nettoyer davantage la chaîne en combinaison avec des expressions régulières et supprimer des balises imbriquées ou d'autres pièces inutiles.

 <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">// Supprimer d&#39;abord les balises indésirables</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">// 再utiliser正则移除剩余的HTMLÉtiquette</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">// Sortir:Hello world!</span></span><span>
</span></span>

Cette méthode peut vous rendre plus affiné dans le processus de nettoyage des étiquettes.

  • Étiquettes associées:

    HTML