This post has
0
votes
vote for this article

Stringa PHP rimuovere tags hml

Vediamo adesso in questa nuova guida come rimuovere i caratteri tag html da una stringa con il PHP. Vedremo quindi principalmente le funzioni strip_tags, pre_replace e capiremo come ripulire una stringa da caratteri speciali.

Ovviamente per rimuovere i tags PHP da una stringa Html la funzione principale è strip_tags la cui sintassi è la seguente.

string strip_tags ( string $stringa [, string $tag_permessi] )

dove

  • $stringa è ovviamente la stringa passata
  • $tag_permessi sono i tag che non volete che vengano eliminati dalla stringa passata

Vediamo subito un esempio

$testo = '<p>Paragrafo Testo.</p><a href="#para">Altro Testo</a>';
echo strip_tags($testo);

La stringa sopra ritonerà semplicemente

Paragrafo Testo Altro Testo

se invece introducessimo una modifica del tipo

echo strip_tags($testo, <p> );

avrebbe ritornato semplicemente

<p> Paragrafo Testo</p> Altro Testo

Questo nello specifico . Diciamo che questa è la funzione standard
Nel caso che si voglia rimuovere tags html derivanti da un parser strip_tags potrebbe anche non funzionare per problemi di codifica utf8.

In questi casi sempre il PHP mette a disposizione delle funzioni più potenti come preg_match_all che ovviamente non è una funzione specifica ma se abbinata con implode permette di ripulire ogni tag html e anche eventuali caratteri sporchi.

Ovviamente qui non vi spiego nel dettaglio il suo funzionamento ma vi lancio ad un esempio esplicito omni comprensivo.

<?php

function strip_tags_contenuto($text, $tags = '', $invert = FALSE) {

preg_match_all('/<(.+?)[\s]*\/?[\s]*>/si', trim($tags), $tags); 
 $tags = array_unique($tags[1]); 
 
 if(is_array($tags) AND count($tags) > 0) { 
 if($invert == FALSE) { 
 return preg_replace('@<(?!(?:'. implode('|', $tags) .')\b)(\w+)\b.*?>.*?</\1>@si', '', $text); 
 } 
 else { 
 return preg_replace('@<('. implode('|', $tags) .')\b.*?>.*?</\1>@si', '', $text); 
 } 
 } 
 elseif($invert == FALSE) { 
 return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text); 
 } 
 return $text; 
} 
?>

Vi consiglio caldamente di provarla. Una funzione molto simile  a preg_replace è ovviamente str_replace anche questa utilizzata spesso in caso di parser ma ovviamente meno potente della stringa regolare.

Fabrizio S. on GoogleFabrizio S. on Youtube
Fabrizio S.
Programmatore Web di linguaggi di programmazione quali PHP, C#, Java, J2EE e molti linguaggi di Scripting come Javascript e Actionscript. Ho lavorato e lavoro su sistemi linux centos e ubuntu distribuiti. Mi diletto su articoli SEO.
%d blogger hanno fatto clic su Mi Piace per questo: