-2

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

字符串例如: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."));

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

4

2 回答 2

0

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

您还应该使用惰性匹配而不是贪婪匹配来避免结果为ipsum}} dolor sit amet, {{consectetur. 您可以通过?在量词后添加 a 来做到这一点:

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

var_dump($result);

一个工作示例

于 2014-11-05T16:11:15.960 回答
0

使用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>';
于 2014-11-05T16:12:36.063 回答