2009-09-06 16 views

Trả lời

43

Nếu bạn quan tâm trong bất kỳ khoảng trắng (bao gồm các tab vv), sử dụng \s

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

nếu bạn chỉ quan tâm đến không gian thì bạn thậm chí không cần regex:

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

Bạn đã có những thông số strpos xung quanh một cách sai lầm. Nên là: nếu (strpos ($ myString, "")! == false) – ncatnow

+0

@ncatnow, cảm ơn những người đứng đầu. Đó là ngồi đó, sai, gần một năm. : p – nickf

+0

bạn có biết nơi liên kết đến tài liệu giải thích \ s \ b \\ S v.v. không? – Pacerier

3

Cũng xem this StackOverflow question giải quyết vấn đề này.

Và, tùy thuộc vào nếu bạn muốn để phát hiện các tab và các loại khác khoảng trắng, bạn có thể muốn nhìn vào perl cú pháp biểu thức chính quy cho những thứ như \ b \ w và [: SPACE:]

+0

'\ b' có lẽ sẽ không giúp ích gì, vì nó sẽ phù hợp với sự bắt đầu và kết thúc của chuỗi: ví dụ: 'preg_match ("/\\ b/"," abc ")' == true – nickf

+0

Điểm tốt, tôi chỉ nghĩ "ranh giới từ" và không nhớ nó sẽ khớp với kết thúc. – JYelton

0

bạn có thể sử dụng:

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

đựng pin- trên 'S' chắc chắn sẽ làm việc.

0

Cách sử dụng ctype_graph cho mục đích này? Điều này sẽ mở rộng phạm vi không gian để có nghĩa là bất kỳ "không gian trắng char" mà không in bất cứ điều gì có thể nhìn thấy trên màn hình (như \ t, \ n) cũng có. Tuy nhiên đây là bản địa và phải nhanh hơn preg_match.

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

nhanh hơn để sử dụng:

strstr($string, ' ');

Các vấn đề liên quan