ctype_space不适用于$ _GET值

时间:2015-12-15 12:12:29

标签: php

我称之为URL:

http://www.example.com/?check=aaa bbb ccc

并且以下行检查$ _GET值是否包含空格:

if (isset($_GET)) {
  while(list($name,$value) = each($_GET)) { 

    if (ctype_space($value)) {
      echo "contains spaces";
    } else {
      echo "no spaces<br />";
    }

    echo $value;
  }
} 

输出结果为:

no spaces
aaa bbb ccc

我的问题是:why ctype_space函数找不到字符串中的空格&#34; aaa bbb ccc&#34;?

3 个答案:

答案 0 :(得分:2)

函数ctype_space,如果文本中的每个字符都创建某种空格

,则返回TRUE

例如,

&#34; \ n \ r \吨&#34;返回true &#34; \ nABC&#34;返回错误

更多信息 http://php.net/manual/en/function.ctype-space.php

尝试

$subject = "aaa bbb ccc"; $pattern = " ";

if ( strpos($subject, $pattern) !== false ) {
      echo "contains spaces"; } else {
      echo "no spaces<br />"; }

答案 1 :(得分:1)

ctype_space仅检查字符串中的所有字符是否为空格。如果要检查字符串是否只包含空格,则应使用其他方法,例如strpos

if (strpos($value, ' ') !== false) {
   echo "contains spaces";
}

答案 2 :(得分:0)

因为函数检查变量== whitespaces

您可以使用此功能替换它:

if (preg_match("/(\r|\n|\t|\s)/", $value)){