2009-09-06 15 views

Odpowiedz

43

Jeśli jesteś zainteresowany w jakiejkolwiek białej przestrzeni (w tym kart itp), użyj \s

if (preg_match("/\\s/", $myString)) { 
    // there are spaces 
} 

Jeśli interesują Cię tylko przestrzenie, to nie potrzebujesz nawet wyrażeń regularnych:

if (strpos($myString, " ") !== false) 
+0

Masz parametry strpos całym niewłaściwy sposób. Powinno być: if (strpos ($ myString, "")! == false) – ncatnow

+0

@Natnow, dziękuję za heads up. Siedzi tam źle, przez prawie rok. : p – nickf

+0

czy wiesz, gdzie jest link do dokumentu, który wyjaśnia \ s \ b \\ S itp? – Pacerier

3

Zobacz także this StackOverflow question, który rozwiązuje ten problem.

I, w zależności czy chcesz wykryć karty i inne rodzaje białej przestrzeni, może warto spojrzeć na Perl składni wyrażeń regularnych do rzeczy, takich jak \ b \ wi [: space:]

+0

'\ b' prawdopodobnie nie pomogłoby, ponieważ dopasuje początek i koniec ciągu znaków: np. 'preg_match ("/\\ b/"," abc ")' == true – nickf

+0

Dobrze, po prostu myślałem "granice słów" i nie pamiętając, że pasowałoby do kończy się. – JYelton

0

można użyć: na pewno działa

preg_match('/[\s]+/',.....) 
0
[\\S] 

górne CASE- 'S'.

0

Co powiesz na użycie ctype_graph w tym celu? Spowoduje to rozszerzenie zakresu przestrzeni w celu oznaczenia dowolnego "znaku białego spacji", który nie wydrukuje niczego widocznego na ekranie (np. \ T, \ n). Jednak jest to natywne i powinno być szybsze niż preg_match.

$x = "string\twith\tspaces" ; 
if(ctype_graph($x)) 
    echo "\n string has no white spaces" ; 
else 
    echo "\n string has spaces" ; 
Powiązane problemy