使用PHP函数在pre_match之后无法获取数组值

时间:2015-06-17 06:03:15

标签: php regex

我有一个包含一行字符串的变量。我想构建一个函数来使用正则表达式过滤字符串。我想过滤类似" _ {text_one或text_tow}"等形式的字符串。正是在我的这个例子中你可以看到有两个" _ {text_one}和_ {text_two}"。我希望我的函数将它们作为数组["_{text_one}","_{text_two}"]返回。

我曾尝试使用array_shift()函数,但它只返回一个。

$text = 'L\' utente _{text_one} _{text_tow} ti ha invitato a giocare';
$text_vars = preg_match('#\_{(.*?)\}#', $text, $matches);
$temp = array_shift( $matches );

任何人都可以给我一个可以将它们作为数组获取的功能。

1 个答案:

答案 0 :(得分:0)

preg_match()更改为preg_match_all()

$text = 'L\' utente _{text_one} _{text_tow} ti ha invitato a giocare';
$text_vars = preg_match_all('#\_{(.*?)\}#', $text, $matches);
$temp = array_shift( $matches );

var_dump($temp);

<强>输出

array(2) {
  [0]=>
    string(11) "_{text_one}"
  [1]=>
    string(11) "_{text_tow}"
}