通过一个或多个空格或制表符展开字符串

如何通过一个或多个空格或制表符来扩展字符串?

例如:

A      B      C      D

我想把它变成一个数组。

180290 次浏览
$parts = preg_split('/\s+/', $str);

尝试 preg _ split: http://www.php.net/manual/en/function.preg-split.php,而不是使用  爆炸

这种方法是有效的:

$string = 'A   B C          D';
$arr = preg_split('/\s+/', $string);

我认为你想要 preg_split:

$input = "A  B C   D";
$words = preg_split('/\s+/', $input);
var_dump($words);

用制表符分隔:

$comp = preg_split("/\t+/", $var);

用空格/制表符/换行符分隔:

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

单独用空格分开:

$comp = preg_split('/ +/', $var);

为了解释 全宽度空间全宽度空间,例如

full width

你可以把本斯的回答延伸到这个问题:

$searchValues = preg_split("@[\s+ ]@u", $searchString);

资料来源:

(我没有足够的声誉来发表评论,所以我写了这个作为答案。)

作者要求爆炸,对你可以用这样的爆炸

$resultArray = explode("\t", $inputString);

注意: 您必须使用双引号,而不是单引号。

假设 $string = "\tA\t B \tC \t D ";(制表符和空格的混合,包括前导制表符和尾随空格)

显然,仅仅在空格或制表符上进行分割是行不通的。 别用这个:

preg_split('~ +~', $string) // one or more literal spaces, allow empty elements
preg_split('~ +~', $string, -1, PREG_SPLIT_NO_EMPTY) // one or more literal spaces, deny empty elements


preg_split('~\t+~', $string) // one or more tabs, allow empty elements
preg_split('~\t+~', $string, -1, PREG_SPLIT_NO_EMPTY) // one or more tabs, deny empty elements

使用这些 :

preg_split('~\s+~', $string) // one or more whitespace character, allow empty elements
preg_split('~\s+~', $string, -1, PREG_SPLIT_NO_EMPTY), // one or more whitespace character, deny empty elements


preg_split('~[\t ]+~', $string) // one or more tabs or spaces, allow empty elements
preg_split('~[\t ]+~', $string, -1, PREG_SPLIT_NO_EMPTY)  // one or more tabs or spaces, allow empty elements


preg_split('~\h+~', $string) // one or more horizontal whitespaces, allow empty elements
preg_split('~\h+~', $string, -1, PREG_SPLIT_NO_EMPTY) // one or more horizontal whitespaces, deny empty elements

你可在此找到以下所有技巧的示范.

参考资料 水平空白