2010-03-23 11 views
8

Voglio rimuovere tutti i caratteri non alfanumerici e lo spazio da una stringa. Quindi voglio che gli spazi rimangano. Cosa mi metto per uno spazio nella funzione di seguito all'interno delle parentesi quadre []:Come rimuovere tutti i caratteri non alfanumerici e non spaziali da una stringa in PHP?

ereg_replace("[^A-Za-z0-9]", "", $title); 

In altre parole, quale simbolo rappresenta lo spazio, lo so \ n rappresenta una nuova linea, non v'è alcun tale simbolo per un singolo spazio.

risposta

25

Basta mettere uno spazio pianura nella vostra classe di caratteri:

[^A-Za-z0-9 ] 

Per gli altri caratteri di spaziatura (tabulazione, interruzioni di linea, ecc) utilizzare \s invece.

Si dovrebbe anche essere consapevoli del fatto che il PHP’s POSIX ERE regular expression functions sono deprecati e saranno rimossi in PHP 6 a favore del PCRE regular expression functions. Quindi vi consiglio di utilizzare preg_replace invece:.

preg_replace("/[^A-Za-z0-9 ]/", "", $title) 
+0

risposta veramente bello. – Franz

+0

Sto commentando semplicemente per dire puntelli per la pubblicazione di un esempio corretto. La risposta verde verificata sopra è tecnicamente errata. Dovrebbe essere: $ title = preg_replace ("/ [^ A-Za-z0-9] /", "", $ title) invece di solo: preg_replace ("/ [^ A-Za-z0-9] /" , "", $ title) che chiarisce che il metodo non sostituisce quella variabile. –

2

Se si desidera solo uno spazio letterale, mettere uno nel gruppo di 'spazi bianchi' come scheda e nuove righe è \ s

1

La risposta accettata fa non rimuovere spazi.

Si consideri il seguente

$string = 'tD 13827$2099'; 
$string = preg_replace("/[^A-Za-z0-9 ]/", "", $string); 

echo $string; 

> tD 138272099 

Ora, se siamo str_replace spazi, otteniamo l'output desiderato

$string = 'tD 13827$2099'; 
$string = preg_replace("/[^A-Za-z0-9 ]/", "", $string); 

// remove the spaces 
$string = str_replace(" ", "", $string); 

echo $string; 

> tD138272099 
+4

Questo è vero. Devo mancare qualcosa dato che c'è una risposta accettata. Sto usando 'preg_replace ('/ [\ s \ W] + /'' e funziona come un incantesimo - toglie non alfanumerici e spazi. – Chords

+0

So che questo è vecchio, ma l'autore non vuole rimuovere . spazi "Come rimuovere tutti i caratteri non alfanumerici e non spaziali da una stringa in PHP?" "Cosa mi metto per uno spazio nella funzione di seguito all'interno delle [] parentesi:" e più in particolare : "Quindi voglio che rimangano gli spazi" C'è solo un "non" mancante nella prima riga del testo. – travisnewman

Problemi correlati