In der Webentwicklung müssen wir häufig HTML-Inhalte reinigen oder filtern, um sicherzustellen, dass die Seite ohne Störung von nicht verwandten Tags angezeigt wird, insbesondere in vom Benutzer eingereichten Inhalten, die möglicherweise einige unsichere oder unnötige HTML-Tags enthalten. In PHP ist die Funktion Strip_tags ein gemeinsames Werkzeug, mit dem wir bestimmte Tags aus HTML -Zeichenfolgen entfernen können.
Wenn wir jedoch mit HTML arbeiten, die SVG -Bilder oder andere komplexe Elemente enthalten, möchten wir möglicherweise nur bestimmte Tags entfernen und gleichzeitig nützliche Struktur und Inhalt bewahren. Entfernen Sie beispielsweise die SVG -Tags bei der Beibehaltung des Textes und anderer Strukturen.
Die Funktion Strip_tags von PHP entfernen alle HTML -Tags standardmäßig. Seine Syntax ist wie folgt:
<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">$allowed_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 : HTML -Zeichenfolge zu verarbeiten.
$ erlaubte_tags : optionaler Parameter, Angabe der zu erhaltenen Tags. Wenn dieser Parameter leer ist, werden alle Tags entfernt.
Zum Beispiel:
<span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">"<p>This is a <b>bold</b> paragraph with an <a href='#'>anchor</a> link.</p>"</span></span><span>;
</span><span><span class="hljs-variable">$cleaned_html</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">$cleaned_html</span></span><span>;
</span></span>
Die Ausgabe wird sein:
<span><span>This </span><span><span class="hljs-keyword">is</span></span><span> a bold paragraph </span><span><span class="hljs-keyword">with</span></span><span> an anchor link.
</span></span>
Standardmäßig löscht Strip_Tags alle HTML -Tags. Wenn wir jedoch bestimmte Tags (z. B. <b> oder <a> ) aufbewahren möchten, können wir sie mit dem zweiten Parameter angeben:
<span><span><span class="hljs-variable">$cleaned_html</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><a>'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$cleaned_html</span></span><span>;
</span></span>
Die Ausgabe wird sein:
<span><span>This </span><span><span class="hljs-keyword">is</span></span><span> a bold paragraph </span><span><span class="hljs-keyword">with</span></span><span> an anchor link.
</span></span>
In einigen komplexen HTML, insbesondere wenn es SVG (skalierbare Vektorgrafiken) enthält, beseitigt Strip_Tags standardmäßig SVG -Tags. Angenommen, wir haben das folgende HTML, das ein SVG -Diagramm und einige Textinhalte enthalten:
<span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">"<div>Some content before SVG</div><svg><circle cx='50' cy='50' r='40' stroke='green' stroke-width='4' fill='yellow' /></svg><div>Some content after SVG</div>"</span></span><span>;
</span></span>
Wenn Sie Strip_Tags verwenden, wird das gesamte SVG -Tag entfernt, aber es kann dazu führen, dass wir nützliche Inhalte verlieren. Zum Beispiel:
<span><span><span class="hljs-variable">$cleaned_html</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">$cleaned_html</span></span><span>;
</span></span>
Ausgabe:
<span><span><span class="hljs-keyword">Some</span></span><span> content </span><span><span class="hljs-keyword">before</span></span><span> SVGSome content </span><span><span class="hljs-keyword">after</span></span><span> SVG
</span></span>
Zu diesem Zeitpunkt können wir den zweiten Parameter von Strip_Tags verwenden, um die Tags anzugeben, die beibehalten werden müssen. Das SVG -Tag ist jedoch kein Standard -HTML -Tag. Wenn wir also keine zusätzliche Verarbeitungsmethode haben, löscht Strip_Tags das gesamte SVG -Element weiterhin.
Um nur die SVG -Tags zu entfernen und den Inhalt in ihnen zu behalten, können Sie zwei Schritte ausführen:
Verwenden Sie Strip_Tags , um alle Tags mit Ausnahme von SVG zu entfernen.
Verwenden Sie regelmäßige Ausdrücke oder andere Methoden, um den SVG -Inhalt zu verarbeiten und seinen internen Text oder eine andere Struktur beizubehalten.
<span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-string">"<div>Some content before SVG</div><svg><circle cx='50' cy='50' r='40' stroke='green' stroke-width='4' fill='yellow' /></svg><div>Some content after SVG</div>"</span></span><span>;
</span><span><span class="hljs-comment">// Schritt1:Alles entfernenHTMLEtikett</span></span><span>
</span><span><span class="hljs-variable">$cleaned_html</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-comment">// Schritt2:reservierenSVGTextinhalt oder andere erforderliche Informationen</span></span><span>
</span><span><span class="hljs-variable">$cleaned_html</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-string">'/<svg.*?>(.*?)<\/svg>/is'</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-variable">$cleaned_html</span></span><span>);
</span><span><span class="hljs-comment">// Ausgangsgereinigte Ergebnisse</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$cleaned_html</span></span><span>;
</span></span>
Die Ausgabe wird sein:
<span><span><span class="hljs-keyword">Some</span></span><span> content </span><span><span class="hljs-keyword">before</span></span><span> SVGSome content </span><span><span class="hljs-keyword">after</span></span><span> SVG
</span></span>
strip_tags ist eine sehr nützliche Funktion, um unnötige Tags in HTML zu beseitigen. Für HTML -Inhalte, die SVG -Grafiken enthält, müssen wir beim Aufräumen vorsichtiger sein, insbesondere wenn wir etwas im SVG behalten müssen. Durch die Kombination regulärer Ausdrücke können Sie den Text oder andere Strukturen beibehalten, während Sie SVG -Tags entfernen und sicherstellen, dass der Inhalt präzise ist und keine wichtigen Informationen verliert.