【问题标题】:Shrink space in string to single delimiter将字符串中的空间缩小为单个分隔符
【发布时间】:2012-04-19 07:26:36
【问题描述】:

在 PHP 中我有这个字符串变量:

$var = " 00480722                ZF452D041502    13      9900        153370178";

当我执行explode 时,我得到这样的结果:

$var = explode(" ",$var);
echo count($var);

// prints -> 36

所以这个分解会生成一个包含 36 个元素的数组,其中大部分是 ""。如何缩小数据之间的所有这些多个空格,以便我可以做 explode 并得到:

$var[0] -> 00480722
$var[1] -> ZF452D041502
...
$var[4] -> 153370178

【问题讨论】:

    标签: php string space explode delimiter


    【解决方案1】:

    你可以使用regular expression split:

    $var = preg_split('/\s+/', trim($var));
    

    这将拆分任意数量的连续空格字符。 trim 用于防止在输入字符串的开头和/或结尾出现空匹配。

    【讨论】:

      【解决方案2】:

      试试

      $var = " 00480722                ZF452D041502    13      9900        153370178";
      $var = explode(" ",$var);
      $var = array_filter($var);
      echo count($var);
      

      输出

      5
      

      变量转储

      var_dump($var);
      
        array
        1 => string '00480722' (length=8)
        17 => string 'ZF452D041502' (length=12)
        21 => string '13' (length=2)
        27 => string '9900' (length=4)
        35 => string '153370178' (length=9)
      

      谢谢

      【讨论】:

        【解决方案3】:

        另一种选择,用一个空格替换多个空格:

        $var = preg_replace("/ {2,}/", " ", $var); //spaces only
        $var = preg_replace("/\s{2,}/", " ", $var); //all whitespaces e.g. line breaks, space etc.
        

        【讨论】:

          【解决方案4】:
          $var = explode(' ',preg_replace('/( +)/', ' ',$var));
          

          【讨论】:

            【解决方案5】:
            $var = array_values(array_filter($var));
            

            【讨论】:

              猜你喜欢
              • 2011-12-30
              • 2020-09-24
              • 1970-01-01
              • 1970-01-01
              • 2012-01-30
              • 2010-12-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多