拆分一个字符串,同时保持外分隔符和字符串(Split a string while keeping

2019-10-18 00:58发布

我试图做一些事情,一定是很简单,但我是相当新的PHP和我与这一个挣扎。 我想就是分裂含0,1个或多个分隔符(大括号),同时保持分隔符之间的字符串和字符串之外的字符串。

例如: '你好{F} {N},你怎么样?' 将输出:

Array ( [0] => Hello 
        [1] => {F}
        [2] => {N} 
        [3] => , how are you? ) 

这里是我到目前为止的代码:

$value = 'Hello {F}{N}, how are you?';
$array= preg_split('/[\{\}]/', $value,-1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
print_r($array);

其输出(缺少括号):

Array ( [0] => Hello 
        [1] => F
        [2] => N 
        [3] => , how are you? )

我也尝试:

preg_match_all('/\{[^}]+\}/', $myValue, $array);

其输出(括号是有,但外文本被刷新):

Array ( [0] => {F} 
        [1] => {N} ) 

我敢肯定,我很良好的跟踪与使preg_split上,而是用错了正则表达式。 谁能帮我这个? 或者告诉我,如果我的方式了吗?

Answer 1:

你是不是捕捉的分隔符。 它们添加到一个捕获组:

/(\{.*?\})/


Answer 2:

您需要周围的表达式部分括号被捕获:

preg_split('/(\{[^}]+\})/', $myValue, -1, PREG_SPLIT_DELIM_CAPTURE);

请参阅文档preg_split()



文章来源: Split a string while keeping delimiters and string outside