2014-04-18 39 views

回答

3

使用strpos()

if (strpos(substr($string, 0, 1), ' ') !== FALSE) { 
    // has whitespace 
} 

或者preg_match()

if(preg_match('/\s/', substr($string, 0, 10))) { 
    // has whitespace 
} 

preg_match()超过strpos()的好处是,它可以检测任何种空白不只是空格字符。 \s是角色分类[\r\n\t\f ]的简写表示。

+0

我已经给出了相同的答案,但是你是不是萨格尔的解决方案更优雅这里SUBSTR()? 'ctype_ *'函数很好,但很少使用。 (至少是我) – hek2mgl

+0

@ hek2mgl:确实。但在这种情况下'preg_match'可能会更快(特别是对于长字符串),因为它不需要扫描整个字符串。它在引擎检测到第一个空白字符时停止搜索。我不确定ctype_space是如何工作的,但无论如何它肯定是一个有用的函数。 –

+0

'ctype _ *()'[functions](https://github.com/php/php-src/blob/master/ext/ctype/ctype.c)在内部调用宏并且不扫描整个字符串。但是,我现在再次阅读该函数的文档,并查看'ctype_string()'检查字符串中的所有(!)字符是否为空格。这在这里不起作用。所以,您的答案仍然是正确的解决方案,甚至如果'ctype'功能很好。 – hek2mgl

1

您可以使用ctype_space()

if (ctype_space($value)) { 

} 
+0

我在想,这是如何解决问题的?它在文档中说'检查所提供的字符串中的所有字符是否为空白。“意思是说,如果有任何非空白字符,它将返回false。 我从原始问题中了解到,他想知道前10个字符中是否有1-10个空格。 – Hamatti

相关问题