4

我很难弄清楚这一点。

我有这样的数据行:

$data = "阿尔法自然资源公司 COM 02076X102 2,077 45,700 x

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

我知道答案可以在 preg_split 中找到,但我无法找出正确的代码..

谢谢

4

5 回答 5

9

preg_split('/\s\s+/', $data) 这虽然匹配任何空格的倍数,例如返回、制表符等,preg_split('/ +/', $data)但将仅匹配空格键中的空格。\s 选择任何空白字符。删除多个空格

于 2011-11-01T01:34:51.933 回答
9

这也可以通过多个空格、单个空格以及单击新选项卡来拆分数据。

preg_split('/\s+/', $data)

于 2018-04-02T06:08:37.867 回答
2

这是一篇旧帖子,但我想我会为了完整性而添加。

$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)捕获偏移量但稍微改变输出结构。
//////////////////////// update/update/update ///////////////
我结束havng to havng to havng使用
/(\ w+\ w+) /
//匹配单词并将其和空格返回。

由于某种原因 preg_split 不会替换空格。
它对我来说很陌生,因为它在某个时间点起作用,然后在经过一些编辑后就没有了。回到它工作的时候,它在我的测试页面和我的实时页面上工作。开始对其进行故障排除和bam添加编辑,结果中均不返回空白。所以这对我来说非常简单

于 2015-04-08T16:33:46.970 回答
0

这应该有效:

preg_split('/  +/', $data)
于 2011-11-01T01:27:29.450 回答
0

实现这一点的最简单方法是使用\swhich 表示空格。要使其仅在至少有两个 ( \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"
}
于 2018-04-02T06:44:11.603 回答