Ho necessità di creare una funzione che mi ripulisca una stringa da caratteri potenzialmente pericolosi: maggiore, minore, virgolette, apostrofo.

Potrei usare HtmlSpecialChars, ma... ci sono alcuni MA:
1. HtmlSpecialChars converte anche il carattere "&" che invece mi serve invariato (rischierei di trovarmi nella situazione di avere "&" convertito in "&"; e, comunque, la "&" mi sta bene che rimanga.
2. HtmlSpecialChars converte i caratteri maggiore, minore, ecc. nelle rispettive entità ">", "<", ecc. mentre io voglio che vengano convertiti in "" (stringa vuota).

Ho realizzato questa funzione, tentando di farla a prova di "figlio di buona donna":

function clean($parm='') {
return( preg_replace( array( "/>|%3e|&#?0*62;/i", "/<|%3c|&#?0*60;/i", "/\"|%22|&#?0*34;/", "/'|%27|&#?0*39;/"), array( "", "", "", ""), $parm));
}

che mi funziona se la provo con un programma stand-alone (visual_regexp-3.1.exe), ma non ne vuole sapere di lavorare bene una volta "online" (con EasyPHP 2.0.0.0 in locale sotto WinXP senza modificare la configurazione standard).

Esito del test sul primo pattern (quello che controlla il carattere ">").
N.B.: aggiunto uno spazio prima e dopo il carattere "&" per evitare traduzioni automatiche del forum.

Stringa di esempio 1: abc>def & 62;ghi%3elmn
Output con visual_regexp-3.1.exe: abcdefghilmn --> funziona
Output online: abcdefghilmn --> funziona

Stringa di esempio 2: abc>def & 0000000000062;ghi%3elmn (aggiunti zeri a valontà per simulare il comportamento di qualche f.d.b.d.)
Output con visual_regexp-3.1.exe: abcdefghilmn --> funziona
Output online: abcdefghilmn --> funziona

Stringa di esempio 3: abc>def & #62;ghi%3elmn
Output con visual_regexp-3.1.exe: abcdefghilmn --> funziona
Output online: abcdef>ghilmn --> NON funziona

Stringa di esempio 4: abc>def & #000000000000062;ghi%3elmn
Output con visual_regexp-3.1.exe: abcdefghilmn --> funziona
Output online: abcdef>ghilmn --> NON funziona

OK. Al termine di questa sbrodolata, qualcuno mi sa aiutare?

Grazie e (visto il periodo) auguroni!