1

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

4

2 回答 2

1

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

/(\{.*?\})/
于 2013-04-15T02:06:26.177 回答
0

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

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

请参阅preg_split().

于 2013-04-15T02:06:36.440 回答