我在解决这个方面遇到了一些麻烦。
我有这样的数据:
$ data =“Alpha Natural Resources Inc COM 02076X102 2,077 45,700 x
我希望在有多个空间的地方“爆炸”这条线。我遇到的问题是我只找到了破坏有一个或多个空间的线的解决方案 - 我希望炸掉这条有多个空间的线,但不只是一个空间(所以例如,Alpha Natural Resources Inc就在一起。
我知道答案是在preg_split中找到的,但我找不到合适的代码..
由于
答案 0 :(得分:7)
preg_split('/\s\s+/', $data)
这个匹配任何空格的倍数,例如return,tab等。preg_split('/ +/', $data)
只匹配空格键中的空格。 \ s选择任何空格字符。 Remove multiple whitespaces
答案 1 :(得分:3)
这也可以通过多个空格,单个空格以及单击新选项卡来分割数据。
preg_split(' / \ s + /',$ data)
答案 2 :(得分:1)
这是一个旧帖子,但我想我会添加完整性。
$arr = preg_split('/[\s][\s]{1,3}/', $string,-1,PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
这有很多选择。请记住在括号内您自定义要查找的确切空格数...
/ [\ s]的[\ s]的{1,4} /
或者只是在第一场比赛后的一次或多次
/ [\ s]的[\ S] + /
还要知道有一些标志要设置,以便更容易处理输出。
PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE
一个使得它不返回空结果,另一个包括返回内容中的匹配内容。
还有其他(http://php.net/preg-split)一个捕获偏移量但稍微改变了输出结构
////////////////////更新////////////////
我最终还是使用了
/(\ W + \ W +)/
//匹配单词并将其与白色空格一起返回。
出于某种原因,preg_split不会替换空格。
它对我来说很陌生,因为它在某个时间点起作用,然后在一些编辑后没有。回到它工作的时候,它在我的测试页面和我的实时页面上工作。开始添加编辑故障排除和bam,既不返回结果中的空白区域。所以这对我来说非常简单
答案 3 :(得分:0)
这应该有效:
preg_split('/ +/', $data)
答案 4 :(得分:0)
实现这一目标的最简单方法是使用表示空格的\s
。要使它只在至少有两个(\s\s
)时工作,你最好使用大括号表示2或更多。通过不在花括号中指定第二个参数,你可以说大于或等于2的任何东西。
preg_split('/\s{2,}/', $data);
要测试此代码,请尝试以下
$data = 'hello here is a test! Hello World';
$p = preg_split('/\s{2,}/', $data);
die(var_dump($p));
其输出如下:
array(5) {
[0]=>
string(5) "hello"
[1]=>
string(4) "here"
[2]=>
string(2) "is"
[3]=>
string(1) "a"
[4]=>
string(17) "test! Hello World"
}