我有一个字符串,其中包含几个“占位符”,每个占位符都标有以下语法:{value}。
我希望能够拉出字符串中的每个占位符并将它们加载到数组中。
例如,如果我在这里有这个字符串......“这是一个{test}字符串,用来演示我的{objective}。”
我希望最终结果是一个包含两个值的数组,“test”和“objective”。
我用preg_split捅了一下但是我的头不能完全绕过它。关于如何实现这一目标的任何想法?
谢谢!
答案 0 :(得分:2)
您可以尝试以下方法来获得所需:
$placeHolders = array();
if(preg_match_all('/\{([^{}}]+)\}/', $haystack, $matches)) {
$placeHolders = $matches[1];
}
由于你没有明确说明占位符允许的内容,我保持正则表达式非常通用。基本上,占位符可以是花括号内的任何东西(花括号本身除外)。
您可能希望限制更多内容,例如仅限字母数字字符。在这种情况下,请尝试:
'/\{([a-zA-Z0-9]+)\}/'
编辑:正则表达式的资源:http://www.regular-expressions.info/reference.html
答案 1 :(得分:1)
我认为你可以使用这个
preg_match_all('/\{([^\}]+)\}/i', $your_string, $match);
$ match [1]中的所有占位符; 在http://php.net/manual/en/function.preg-match-all.php
了解有关该功能的更多信息