2009-09-06 59 views

回答

43

如果你感興趣的任何空白(包括標籤等),使用\s

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

如果你只是對空間感興趣,那麼你甚至不需要一個正則表達式:

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

你得周圍的錯誤的方式對strpos參數。應該是: if(strpos($ myString,「」)!== false) – ncatnow 2010-08-16 14:21:33

+0

@ncatnow,謝謝你的支持。這一直坐在那裏,錯了將近一年。 :p – nickf 2010-08-17 04:40:52

+0

您是否知道解釋\ s \ b \\ S等文件的鏈接? – Pacerier 2011-09-10 16:09:28

3

另請參閱this StackOverflow question解決此問題。

,並根據如果你想檢測標籤和其他類型的空白,你可能想看看事情的Perl的正則表達式語法如\ B \ w和[:空間:]

+0

'\ b'這樣的單引號括住它,你可以使用'/ \ s /',可能不會有幫助,因爲它將匹配字符串的開始和結束:例如'preg_match(「/ \\ b /」,「abc」)'== true – nickf 2009-09-06 06:19:56

+0

好點,我只是在想「單詞邊界」而不記得它會匹配結束。 – JYelton 2009-09-06 06:45:57

0

您可以使用:

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

上區分 'S' 肯定會工作。

0

如何使用ctype_graph用於此目的?這將擴大空間範圍,意味着任何「空白字符」都不會打印屏幕上可見的任何內容(如\ t,\ 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

更快地使用:

strstr($string, ' ');