1.
<form action="1.php" method="POST">
姓名:<input type="text"  name="name"/><br>
//1.php
$name=trim($_POST["name"]);
checkit($name);
function checkit($a){
        $b=str_split($a);//拆分字符串,存为数组
        print_r($b);//可显示有空格的值
        echo  "<br/>";
        for($i=0;$i<count($b);$i++){
        echo  $i;
        echo  $b[$i];//可输出空格
        echo  "<br/>";
        if($b==" ")//但是无法验证空格
        {       
            echo $b;
        echo "space";
        break;
        }       
    }
}
问题:if($b==" ")//但是无法验证空格   这一行  ;echo  $b[$i];//可输出空格;但是 为何在判断的时候 就不能判断出来有空格呢。
2.
知道PHP是开源的 ,但是 现在我只有PHP手册 没有类库的源代码
查阅好多资料都没找到。我想看底层代码,却做不到。这是为何@@@
请多关照。。

解决方案 »

  1.   

    PHP类库的源码在www.php.net都有,你要下在source版本的PHP。
    大部分源码都是C写的。
      

  2.   

    那不是空格不信你试试var_dump(str_split(''));//单单这一句或者在你的接收参数页面var_dump(str_split($_POST["name"]));http://www.php.net/downloads.php这里去下载
      

  3.   

    //        if($b[i]==" ")。
    //        {       
    //            echo $b[i];
    //        echo "space";
    //        break;
    //        }       
    //    }这样也不行。
      

  4.   

    $str = "Hello Friend";
    $arr1 = str_split($str);
    print_r($arr1);
    Array
    (
        [0] => H
        [1] => e
        [2] => l
        [3] => l
        [4] => o
        [5] =>
        [6] => F
        [7] => r
        [8] => i
        [9] => e
        [10] => n
        [11] => d
    )还是有空格的  而且我输出的时候 echo $b[i];
    也能输出空格
      

  5.   

    姓名:<input type="text" name="name"/>这里的值有空格么????至少给出的代码,没看到你赋值
    $str = "Hello Friend";这里测试加空格能一样么?
    var_dump(str_split(''));//没有空格,连在一起的'',你测试看看,输出什么
      

  6.   


    var_dump(str_split(''));
    输出:
    array(1) { [0]=> string(0) "" } 
    //
    //这个是我测试的结果:源代码贴出来了
    Array ( [0] => v [1] => v [2] => [3] => v [4] => v ) 
    0v
    1v

    3v
    4v
    姓名:vv vv//应该在姓名前写下 “space”提示的 结果没有
      

  7.   

    <form action="1.php" method="POST">
    姓名:<input type="text"  name="name"/>
    //1.php
    $name=trim($_POST["name"]);
    checkit($name);
    function checkit($a){
            $b=str_split($a);//拆分字符串,存为数组
            print_r($b);
            echo  "<br/>";
            for($i=0;$i<count($b);$i++){//count计算数组,strlen计算字符串
            echo  $i;
            echo  $b[$i];
            echo  "<br/>";
            if($b[i]==" ")//。
            {       
                echo $b[i];
            echo "space";
            break;
            }       
        }
    }
      

  8.   

    array(1) { [0]=> string(0) "" }    这个是空格么??  空字符串啊,朋友
      

  9.   

    。我的意思你  看看的程序  
    我的要求是  检测姓名  有空格的时候  提示space
    没看懂你的意思
      

  10.   

     if($b[i]==" ")//。
    大家可以试下  我也很纳闷  为何不能比较 
      

  11.   

      if($b[$i]==" ")//$i
      {   
      echo $b;
      echo "space";
      break;
      }   你顶楼给出的代码,传过去的name,只能是空字符串
      

  12.   

    我明白了 。
    看我说的对不对  
    $b=str_split($a);//
    这样的话 空格此时存到数组里面  其实就成为了 空字符
    。。所以  比较的时候 if($b[i]==" ")
    是不对的 应为 空字符 不是空格 
    应为 if($b[i]=="")
    这样就对了
      

  13.   

    我试试吧,strpos就好了,其实
      

  14.   

    15楼的意见值得参考。
    俺不懂PHP,但在C中应该用单引号来表示一个字符。字符和字符串不能比较。PHP可以吗?那结果应该是不等吧。
      

  15.   

    $name=trim($_POST["name"]);
    这个地方 获取空格的时候  其实也就转成了字符串
    空格也成了空字符
      

  16.   

    还是不对呀 。
    if($b[i]=="")
    这样之后,一直都有space
      

  17.   

    前面我看错了,不好意思我复制了代码,$b[$i]这个明显的,改动了,测试了下,没有问题,附测试代码需要注意的是$name=trim($_POST["name"]);所以测试用的字符串空格不能在两端。必须在中间
    $name=trim($_POST["name"]);
    checkit($name);
    function checkit($a){
      $b=str_split($a);//拆分字符串,存为数组
      print_R($b);//可显示有空格的值
      echo "<br/>";
      for($i=0;$i<count($b);$i++){
      echo $i;
      echo $b[$i];//可输出空格
      echo "<br/>";
      if($b[$i]==" ")//但是无法验证空格
      {   
      echo $b[$i];
      echo "space";
      break;
      }   
      }
    }
      

  18.   


    晕  我的错
    if($b[$i]==" ") 我写成了if($b[i]==" ")
    谢谢  结帖了