空白分隔符分割
问题描述:
<?php
$text = "Testing text splitting\nWith a newline!";
$textArray = preg_split('/\s+/', $text, 0, PREG_SPLIT_DELIM_CAPTURE);
print_r($textArray);
上面的代码将输出以下内容:空白分隔符分割
Array
(
[0] => Testing
[1] => text
[2] => splitting
[3] => With
[4] => a
[5] => newline!
)
但是据我所知,PREG_SPLIT_DELIM_CAPTURE标志应被捕获空格分隔符在数组中。我错过了什么吗?
编辑:好的,在重读了我现在理解的文档后,PREG_SPLIT_DELIM_CAPTURE并不适用于这种情况。我需要的输出会是这样的:
Array
(
[0] => Testing
[1] => ' '
[2] => text
[3] => ' '
[4] => splitting
[5] => '\n'
[6] => With
[7] => ' '
[8] => a
[9] => ' '
[10] => newline!
)
答
所以,如果你PREG_SPLIT_DELIM_CAPTURE
阅读说明书再一次它说:
如果设置了这个标志,定界符模式中的括号表达式也会被捕获并返回以及。
你会突然明白,expression in the delimiter pattern
(在你的情况下,它是\s
)将是captured
(即加入到结果),只有当它在parentheses
。现在,您可以:
$text = "Testing text splitting\nWith a newline!";
$textArray = preg_split('/(\s+)/', $text, 0, PREG_SPLIT_DELIM_CAPTURE);
// parentheses!
print_r($textArray);
+0
我只是想出了你的答案,哈哈。谢谢! – user2827048
+0
是的,我也是))) –
谁告诉你的? –
我的意思是如果情况并非如此,那么还有不同的方法吗? – user2827048
根据php [manual](http://php.net/manual/en/function.preg-split.php),'PREG_SPLIT_DELIM_CAPTURE'会导致模式的任何加括号的部分也被返回。你想要的输出是什么? –