preg_split-按空格和所选字符拆分,但将字符保留在数组中 - php

所以我有这个问题,我想用包含空格()和逗号(,)的模式分割字符串。我设法按该模式拆分字符串,但问题是我想将该逗号保留在数组中。这是我的字符串:

$string = "It's just me, myself, i and an empty glass of wine. Age = 21";

这是我如何拆分它:

$split = preg_split('/[\s,]+/', $string, -1, PREG_SPLIT_DELIM_CAPTURE);

这是我在此示例中获得的数组(如您所见,逗号消失了)

这是我现在拥有的一个:

Array
(
    [0] => It's
    [1] => just
    [2] => me
    [3] => myself
    [4] => i
    [5] => and
    [6] => an
    [7] => empty
    [8] => glass
    [9] => of
    [10] => wine.
    [11] => Age
    [12] => =
    [13] => 21
)

这是我想要的:

Array
(
    [0] => It's
    [1] => just
    [2] => me
    [3] => ,
    [4] => myself
    [5] => ,
    [6] => i
    [7] => and
    [8] => an
    [9] => empty
    [10] => glass
    [11] => of
    [12] => wine.
    [13] => Age
    [14] => =
    [15] => 21
)

如果在该逗号之前有一个空格并且该逗号不在该模式中,那么我会将其放入由preg_split生成的数组中,但问题是我希望它在该逗号之前有或没有空格。

有没有办法做到这一点?

谢谢! :D

参考方案

the problem is that i want to keep that comma in array
然后只需使用标志PREG_SPLIT_DELIM_CAPTURE

PREG_SPLIT_DELIM_CAPTURE
如果设置了此标志,定界符模式中带括号的表达式也将被捕获并返回。

http://php.net/manual/en/function.preg-split.php
所以你会这样分割

$split = preg_split('/(,)\s|\s/', $string, null, PREG_SPLIT_DELIM_CAPTURE);

你可以在这里测试
https://3v4l.org/Eq8uS
对于Limit参数,null-1更合适,因为我们只想跳到flag参数。当您阅读它时,它会更干净,因为null并不意味着-1可能具有一些重要的值(在这种情况下,它没有),但是对于那些也不了解preg_split的人来说,这只会更清楚只是忽略了那个论点。

php:拆分字符串,直到第一次出现数字 - php

我有像cream 100G sup 5mg Children 我想在第一次出现数字之前将其拆分。所以结果应该是array( array('cream','100G'), array('sup','5mg Children') ); 可以告诉我如何为此创建图案吗?我试过了list(…

如何使用php preg_split从字符串中获取除括号以外的所有内容? - php

$str = "[10:42-23:10]part1[11:30-13:20]part2" 我希望将其拆分为:[1] 10:42-23:10 [2] part1 [3] 11:30-13:20 [4] part2 我设法弄出的最好的是:$parts = preg_split("/(\\[*\\])\w+/", $str…

PHP:Preg_replace,单词边界和非单词字符 - php

我需要替换文本中以井号(#)开头的单词。好吧,我知道如何替换整个单词。preg_replace("/\b".$variable."\b/", $value, $text);由于该\ b修饰符仅接受单词字符,因此不会替换包含井号的单词。我有这个html,其中包含#companyName类型的变量,我将其替换为一个值。 参…

PHP preg_match直到双行中断 - php

我在mysql字段中有此数据:First text text text text text text text text text text text text text text text text text text text text Second text text text text text text text text text text te…

PHP preg_replace和号 - php

好吧,我可能不会以正确的方式解决这个问题,但是这里就来了。我有这个带链接的字符串,并提取标签之间的文本...$string = $item; $pattern = '/\<a([^>]*)\>([^<]*)\<\/a\>/i'; $replacement = '$2'; $messa…