Php 使用正则表达式分析`{value}`形式的值列表

Php 使用正则表达式分析`{value}`形式的值列表,php,regex,pcre,Php,Regex,Pcre,我有一个字符串,如下所示({}的编号未知): 现在我想把{}中的内容取出并放入数组。我该怎么做?我试过: preg_match( "/(\{{\S}+\}*/)*") 但结果是错误的。非常感谢所有人的帮助。尝试preg\U match\U all('/\{(.+)\}/U',$text)我们可以假设输入总是有效的吗?为什么需要\s?你想过滤掉空白吗?我不明白为什么人们如此讨厌正则表达式而喜欢正则表达式,但我还是对这个答案投了赞成票:)这是一个不需要它们的好解决方案(好吧,除非它不能验证输入)。

我有一个字符串,如下所示(
{}
的编号未知):

现在我想把
{}
中的内容取出并放入数组。我该怎么做?我试过:

preg_match( "/(\{{\S}+\}*/)*")

但结果是错误的。非常感谢所有人的帮助。

尝试
preg\U match\U all('/\{(.+)\}/U',$text)
我们可以假设输入总是有效的吗?为什么需要
\s
?你想过滤掉空白吗?我不明白为什么人们如此讨厌正则表达式而喜欢正则表达式,但我还是对这个答案投了赞成票:)这是一个不需要它们的好解决方案(好吧,除非它不能验证输入)。性能很少是避免正则表达式的有效理由。至于偏好,我认为@kemp的解决方案比这更清楚。你和我以及艾伦·摩尔站在同一边。我知道其他响应者会提供正则表达式解决方案,所以我决定提供非regexer的解决方案。
preg_match_all('/{(.*?)}/', $string, $match);
print_r($match[1]);
preg_match_all('/{(.*?)}/', $string, $match);
print_r($match[1]);
<?php
$string = '{test}{test1}{test2}{test3}{test4}';
$parts = explode('}{', substr($string, 1, -1));