2011-01-21 16 views
12

Io uso queste righe di codice per rimuovere tutti i segni di punteggiatura, simboli, ecc, come si può vedere nella matrice,Qual è il modo migliore per rimuovere segni di punteggiatura, simboli, segni diacritici, caratteri speciali?

$pattern_page = array("+",",",".","-","'","\"","&","!","?",":",";","#","~","=","/","$","£","^","(",")","_","<",">"); 

$pg_url = str_replace($pattern_page, ' ', strtolower($pg_url)); 

ma voglio rendere più semplice come sembra stupido per elencare tutte le cose che voglio rimuovere nella matrice in quanto potrebbero esserci altri caratteri speciali che voglio rimuovere.

Ho pensato di utilizzare l'espressione regolare di seguito,

$pg_url = preg_replace("/\W+/", " ", $pg_url); 

ma non rimuove sotto-punteggio - _

Qual è il modo migliore per rimuovere tutte queste cose? Può l'espressione regolare farlo?

+1

È possibile rimuovere tutto tranne '[A-Za-z0-9]' ;-) – thedom

+0

aw! grazie mille! – laukok

risposta

25

A seconda di come avidi vuoi essere, si potrebbe fare qualcosa di simile:

$pg_url = preg_replace("/[^a-zA-Z 0-9]+/", " ", $pg_url); 

Questo sostituirà tutto ciò che non è una lettera, numero o spazio.

+1

grazie mille per questo. – laukok

+0

veloce e facile :) grazie – Goaler444

12

Utilizzare le classi:

preg_replace('/[^[:alpha:]]/', '', $input); 

eliminerebbe tutto ciò che non è considerato un "personaggio" dalle impostazioni internazionali attualmente impostato. Se si tratta di punteggiatura, si cerca di eliminare, la classe sarebbe [:punct:].

\W intende "non-parola carattere" ed è l'opposto del \w che include sottolineatura (_).

Problemi correlati