使用具有多个空格的Preg_Split

时间:2011-11-01 01:24:56

标签: php preg-split

我在解决这个方面遇到了一些麻烦。

我有这样的数据:

$ data =“Alpha Natural Resources Inc COM 02076X102 2,077 45,700 x

我希望在有多个空间的地方“爆炸”这条线。我遇到的问题是我只找到了破坏有一个或多个空间的线的解决方案 - 我希望炸掉这条有多个空间的线,但不只是一个空间(所以例如,Alpha Natural Resources Inc就在一起。

我知道答案是在preg_split中找到的,但我找不到合适的代码..

由于

5 个答案:

答案 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"
}