拆分字符串,同时保持分隔符和字符串在外面

时间:2013-04-15 02:02:07

标签: php string split delimiter

我正在尝试做一些必须非常简单的事情,但我对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,但使用了错误的正则表达式。谁能帮我这个?或者告诉我,如果我离开了?

2 个答案:

答案 0 :(得分:1)

您没有捕获分隔符。将它们添加到捕获组:

/(\{.*?\})/

答案 1 :(得分:0)

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

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

请参阅preg_split()的文档。