PHP - 确保字符串没有空格

时间:2011-11-24 03:27:16

标签: php

如何检查PHP字符串是否包含任何空格?我想检查是否有空格,然后回显错误消息,如果为真

if(strlen($username) == whitespace ){

                echo "<center>Your username must not contain any whitespace</center>";

8 个答案:

答案 0 :(得分:78)

if ( preg_match('/\s/',$username) ) ....

答案 1 :(得分:2)

此解决方案适用于反问题:知道字符串是否包含至少一个单词。

/**
 * Check if a string contains at least one word.
 *
 * @param string $input_string
 * @return boolean
 *  true if there is at least one word, false otherwise.
 */    
function contains_at_least_one_word($input_string) {
  foreach (explode(' ', $input_string) as $word) {
    if (!empty($word)) {
      return true;
    }
  }
  return false;
}

如果函数返回false,$ input_string中没有单词。 所以,你可以这样做:

if (!contains_at_least_one_word($my_string)) {
  echo $my_string . " doesn't contain any words.";
}

答案 2 :(得分:1)

试试这个方法:

if(strlen(trim($username)) == strlen($username)) {
  // some white spaces are there.
}

答案 3 :(得分:1)

试试这个:

if (count(explode(' ', $username)) > 1) {
  // some white spaces are there.
}

答案 4 :(得分:1)

试试这个:

if ( preg_match('/\s/',$string) ){
    echo "yes $string contain whitespace";  
} else {
    echo "$string clear no whitespace ";    
}

答案 5 :(得分:0)

PHP提供built-in function ctype_space( string $text )来检查空格字符。但是,ctype_space()检查字符串的每个字符是否创建了空格。在您的情况下,您可以创建一个类似于以下的函数来检查字符串是否包含空格字符。

/**
 * Checks string for whitespace characters.
 *
 * @param string $text
 *   The string to test.
 * @return bool
 *   TRUE if any character creates some sort of whitespace; otherwise, FALSE.
 */
function hasWhitespace( $text )
{
    for ( $idx = 0; $idx < strlen( $text ); $idx += 1 )
        if ( ctype_space( $text[ $idx ] ) )
            return TRUE;

    return FALSE;
}

答案 6 :(得分:0)

其他方法:

$string = "This string have whitespace";
if( $string !== str_replace(' ','',$string) ){
    //Have whitespace
}else{
     //dont have whitespace
}

答案 7 :(得分:0)

我发现了另一个很好的功能,可以很好地用于搜索字符串中的某些字符集-strpbrk

if (strpbrk($string, ' ') !== false) {
    echo "Contain space";
} else {
    echo "Doesn't contain space";
}