我正在尝试做一些必须非常简单的事情,但我对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,但使用了错误的正则表达式。谁能帮我这个?或者告诉我,如果我离开了?
答案 0 :(得分:1)
您没有捕获分隔符。将它们添加到捕获组:
/(\{.*?\})/
答案 1 :(得分:0)
您需要捕获表达式部分周围的括号:
preg_split('/(\{[^}]+\})/', $myValue, -1, PREG_SPLIT_DELIM_CAPTURE);
请参阅preg_split()
的文档。