<?
$key="a    b      c";
$words = explode(" ",$key);
print "num=".count($words); 
?>
答案是: 11我希望的答案是:3  ,就是说无论 "a    b      c" 三个数字中有多少个空格都算一个,高手指点下,哪个地方需要改下?

解决方案 »

  1.   

    $words = split(" +",$key);可用 split 函数,支持正则表达式
      

  2.   

    <?
    $key="a    b      c";
    echo $num=count(split("[ ]+",$key));
    ?>
    经过测试的
      

  3.   

    来个支持换行的。
    <?php
    $key="a  b 
    c";
    $arr = preg_split('/[\n\r\t\s]+/i', $key);  print_r($arr);?>
      

  4.   

    str_replace('  ',' ',$str)
      

  5.   

    split(" +",$key)
    split("[ ]+",$key)这2个结果一样,用了正则?
      

  6.   

    是的,split 函数的分割符是正则表达式
      

  7.   

    楼上,请问 preg_split 和split 有什么区别???/
      

  8.   

    split 根据字符数来分割
    preg_split 根据正则来分割
      

  9.   


    split是POSIX正则系列里的(这个系列的在5.3里是deprecated的)
    preg_split是perl正则
      

  10.   

    split是POSIX正则系列里的
    preg_split是perl正则复杂了~  大家的正则是自己写还是直接在网上down了
      

  11.   


    <?
    $key="    a    b      c     ";
    $words = split(" +",$key);
    print "num=".count($words); 
    ?>
    现在$key这个变量的开头和结尾都有空格,我现在想去掉这个空格(开头和结尾)并且不影响变量之间的空格,我这样写似乎还不对~~
    $words = split(" +",$key);
    $s=preg_replace("/^\s+|$words|\s+$/","",$words1);
      

  12.   

    <?php
    $key="    a    b      c     ";
    var_dump($key);
    var_dump(trim($key));
    ?>
      

  13.   

    确实用  trim()就可以解决,接着提问:表单:<td><input type="text" name="key" /></td>$key=$_POST['key'];if($key){
       
      发现在前台text里按空格,提交还是可以执行if($key)里面的代码,空难道也有值?就算用isset($key)一样没用~~以前用if($key)是可以拦住没有填的提交,现在提交空怎么不执行}
      

  14.   

    正则用\s+匹配字符串,替换成一个空白字符。再explode
      

  15.   

    空格怎么会没值, 很多时候它以  \s 或 &nbsp;  形式存在。