删除 php 子字符串中不需要的空格?

Removing unwanted whitespace in sub string in php?

我遇到了用户在搜索框中键入字符串的场景。如果输入的字符串超过一个单词,我用

展开
$text = "Hello World";
$pieces = explode(' ', $text);

我将在

之前获得第一和第二任期
$pieces['0'] & $pieces['1'].

但是,如果用户输入类似

$text = "Hello                    World";

我应该如何获得第二个任期?

如果我 var_dump 结果,我得到

array(12) {
  [0]=>
  string(5) "Hello"
  [1]=>
  string(0) ""
  [2]=>
  string(0) ""
  [3]=>
  string(0) ""
  [4]=>
  string(0) ""
  [5]=>
  string(0) ""
  [6]=>
  string(0) ""
  [7]=>
  string(0) ""
  [8]=>
  string(0) ""
  [9]=>
  string(0) ""
  [10]=>
  string(0) ""
  [11]=>
  string(5) "World"
}

而不是 explode() 使用 preg_split() 然后使用 \s+ (\s space, + 1 次或多次)作为分隔符。像这样:

$pieces = preg_split("/\s+/", $text);

使用这个

将多个space替换为单个space
$output = preg_replace('!\s+!', ' ', $text);

然后拆分文本

$pieces = explode(' ', $output);

尝试:

<?php
$text = "Hello World";

// BONUS: remove whitespace from beginning and end of string

$text = trim($text);

// replace all whitespace with single space

$text = preg_replace('!\s+!', ' ', $text);
$pieces = explode(' ', $text);
?>

Rizier123 的答案足够有效,但如果您想避免使用使用正则表达式检查的 preg_split,您可以使用空字符串获取数组,然后像这样从中删除所有空元素:

$text = "Hello      World";
$pieces = array_filter(explode(' ', $text));