将字符串中的空格缩小为单个分隔符


Shrink space in string to single delimiter

在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

您可以使用正则表达式split:

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

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

尝试

$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)

感谢

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

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