Position actuelle: Accueil> Derniers articles> Lorsque strip_tags est utilisé en conjonction avec preg_replace, comment filtrer et traiter les balises personnalisées?

Lorsque strip_tags est utilisé en conjonction avec preg_replace, comment filtrer et traiter les balises personnalisées?

gitbox 2025-08-26
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Cette partie du code n&#39;a rien à voir avec le contenu de l&#39;article,Par exemple la démonstration</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Commencez à exécuter le script...\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h2>strip_tags et preg_replace Lorsqu&#39;il est utilisé ensemble,Comment implémenter le filtrage et le traitement des balises personnalisées?</h2>

<p>existerPHPmilieu,traiter avecHTMLQuand une chaîne,经常需要对其milieu的标签进行过滤或替换。<code></span><span><span class="hljs-title function_ invoke__">strip_tags</span></span><span>()

Comme on peut le voir à partir de l'exemple, seules les balises <strong> sont conservées et d'autres balises sont supprimées.

2. Preg_replace est utilisé pour une correspondance et un remplacement plus complexes

Preg_replace prend en charge les expressions régulières, qui peuvent être utilisées pour correspondre aux formats de balises complexes et même à gérer les attributs à l'intérieur des balises. Par exemple:

 
</span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">"&lt;p class='intro'&gt;Exemple de texte&lt;/p&gt;"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-string">'/&lt;p[^&gt;]*&gt;/i'</span></span><span>, </span><span><span class="hljs-string">'&lt;div class="new-intro"&gt;'</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">$result</span></span><span>; 
</span><span><span class="hljs-comment">// Sortir:&lt;div class="new-intro"&gt;Exemple de texte&lt;/p&gt;</span></span><span>

Ici, nous utilisons régulièrement pour remplacer toutes les balises d'attribut <p> par une nouvelle classe & lt ; div & gt ; Tags. p > <h3> iii . Combiner Strip_tags et preg_replace pour implémenter le filtrage et le traitement des balises personnalisées H3 > <p> strip_tags a une fonction simple, et il est impossible de juger les attributs de balise, et il ne peut pas être compliqué de traiter le contenu de la balise. Combiné avec preg_replace , vous pouvez d'abord remplacer la balise personnalisée par la régularité en tant que balises standard ou effectuer des ajustements d'attribut, puis utiliser Strip_tags pour filtrer les balises non alloculées. P > <p> Exemple : nous voulons garder uniquement le & lt ; b & gt ; et & lt ; a & gt ; Tags, mais nous devons convertir les balises personnalisées & lt ; mytag & gt ; à & lt ; Span & gt ; et seulement l'attribut HREF pour le & lt ; a & gt ; Tags . p > <pre> <code> $ html = "c'est & lt ; mytag & gt ; tag personnalisé & lt ; / mytag & gt ;, et & lt ; a href = ' http : // Exemple . com ' title =' title '& gt ; link & lt ; / a & gt ; et & lt ; b & gt ; audacieux& ; / b & gt ;. "; // étape 1: remplacer & lt ; mytag & gt ; par & lt ; span & gt ; $ html = preg_replace (['/ & lt ; \ /? Mytag & gt ; / i '], [ function ($ correspond ) { return ) str_ireplace ([ 'mytag' , '/ mytag' ], [ 'span' , '/ span' ], $ correspond [ 0 ]); }], $ html ); // Étape 2: filtrez les attributs non-HREF de la balise <a> $ html = preg_replace_callback ( '/ <a \ s + ([^>] *)> / i' , fonction ( $ correspond ) { // conserver uniquement l'attribut HREF if ( preg_match ( '/ href \ s * = \ s * ["\']? ([^" \ '> \ s] +) ["\']? / i ' , $ correspond [ 1 ], $ hrefmatch )) { return ' <a href = "'. $ hrefmatch [1]. '"> ' ; } retour '<a>' ; }, $ html ); // Étape 3: Utilisez Strip_Tags pour conserver les balises spécifiées $ result = strip_tags ( $ html , '<b> <a> <span>' ); écho $ résultat ; De cette façon, le <mytag> original est remplacé par <span>, et la balise <a> conserve uniquement l'attribut HREF, et seuls les balises <b>, <a> et <pan> peuvent être conservées dans son ensemble, et d'autres balises sont supprimées.

4. Résumé

  • Strip_tags convient à la suppression rapide de la plupart des balises, permettant à certaines balises simples d'être conservées.
  • Preg_replace combiné avec la fonction de rappel peut gérer de manière flexible les besoins complexes tels que la conversion d'étiquette et le filtrage des attributs.
  • En combinant les deux, vous pouvez d'abord utiliser une conversion ou un ajustement régulier des balises, puis utiliser Strip_Tags pour le filtrage final pour garantir que le HTML de sortie est à la fois sûr et conforme aux besoins de l'entreprise.

La conception raisonnable des expressions régulières et la logique de filtrage en fonction des exigences est la clé de la mise en œuvre du filtrage et du traitement des étiquettes personnalisées.