2010-03-23 9 views

Odpowiedz

25

Wystarczy umieścić zwykły przestrzeń do swojej klasy postaci:

[^A-Za-z0-9 ] 

Dla innych białych znaków (tabulator, przerwy linii, itp) zamiast używać \s.

Należy również pamiętać, że PHP’s POSIX ERE regular expression functions są przestarzałe i zostaną usunięte w PHP 6 na rzecz PCRE regular expression functions. Więc polecam korzystanie z preg_replace zamiast:.

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

Naprawdę ładne odpowiedź. – Franz

+0

Komentuję po prostu, aby powiedzieć "Rekwizyty" o opublikowaniu odpowiedniego przykładu. Powyższa zielona sprawdzona odpowiedź jest technicznie niepoprawna. Powinno to być: $ title = preg_replace ("/ [^ A-Za-z0-9] /", "", $ title) zamiast tylko: preg_replace ("/ [^ A-Za-z0-9] /" , "", $ title) wyjaśniające, że metoda nie zastępuje tej zmiennej. –

2

Jeśli chcesz tylko dosłowną przestrzeń, umieścić jeden w grupie za „białych znaków” jak zakładki i nowej linii jest \ s

1

Zaakceptowanych odpowiedź robi nie usuwać spacji.

Rozważmy następujący

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

echo $string; 

> tD 138272099 

Teraz jeśli str_replace przestrzenie, otrzymujemy pożądany wynik

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

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

echo $string; 

> tD138272099 
+4

To prawda. Muszę czegoś przegapić, ponieważ istnieje akceptowana odpowiedź. Używam 'preg_replace ('/ [\ s \ W] + /'' i działa jak charm - usuwa niealfanumeryczne i spacje – Chords

+0

Wiem, że to jest stare, ale autor nie chce usunąć . obowiązuje „Jak usunąć wszystkie znaki inne niż alfanumeryczne i non-space z ciągiem w PHP?” „Co mogę umieścić na powierzchni w funkcji poniżej wewnątrz nawiasach []:” a przede : "Tak więc chcę, aby spacje pozostały". W pierwszym wierszu tekstu brakuje tylko "non". – travisnewman

Powiązane problemy