获取双括号内的字符串

时间:2014-11-05 16:05:46

标签: php regex preg-grep

我有一个字符串,其中字符串的某些部分位于大括号内,我想将它们放在数组中。

字符串例如是:Lorem {{ipsum}} dolor sit amet, {{consectetur}} adipiscing elit.

我想得到:array("ipsum", "consectetur")

我试过了:

$regExp = "/\{\{([^)]+)\}\}/";
$result = preg_grep($regExp, array("Lorem {{ipsum}} dolor sit amet, {{consectetur}} adipiscing elit."));

但是我得到了给定字符串作为结果

2 个答案:

答案 0 :(得分:2)

您使用了错误的功能,您应该使用preg_match_all()

您还应该使用延迟匹配而不是贪婪匹配来避免结果为ipsum}} dolor sit amet, {{consectetur。你可以在量词之后添加?来做到这一点:

$regExp = "/\{\{([^)]+?)\}\}/";
                      ^ here
preg_match_all($regExp, "Lorem {{ipsum}} dolor sit amet, {{consectetur}} adipiscing elit.",
               $result);

var_dump($result);

A working example

答案 1 :(得分:1)

使用preg_match_all()代替preg_grep

$str = 'Lorem {{ipsum}} dolor sit amet, {{consectetur}} adipiscing elit';
preg_match_all('!\{(\w+)\}!', $str, $m);
$result = array_map(function($v){return trim($v, '{}');},$m[0]);

print '<pre>';
print_r($result);
print '</pre>';