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.