我有一个字符串,其中字符串的某些部分位于大括号内,我想将它们放在数组中。
字符串例如是: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."));
但是我得到了给定字符串作为结果
答案 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);
答案 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>';