PHP:查找字符串中特定文本的所有实例并将其提取到数组中

时间:2010-08-11 01:27:57

标签: php regex string

我有一个字符串,其中包含几个“占位符”,每个占位符都标有以下语法:{value}。

我希望能够拉出字符串中的每个占位符并将它们加载到数组中。

例如,如果我在这里有这个字符串......“这是一个{test}字符串,用来演示我的{objective}。”

我希望最终结果是一个包含两个值的数组,“test”和“objective”。

我用preg_split捅了一下但是我的头不能完全绕过它。关于如何实现这一目标的任何想法?

谢谢!

2 个答案:

答案 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

了解有关该功能的更多信息