1

很抱歉放弃了另一个preg_match正则表达式问题。我一直在处理这个问题太久,无法让它工作,所以任何帮助表示赞赏!

我需要一个简单的 preg_match_all 来为我返回 format 的占位符[@varname]

在一个字符串中

"hello, this is [@firstname], i am [@age] years old"

我希望有一个值为“名字”和“年龄”的数组。

我的尝试[varname]是:

preg_match_all("/[([^]]+)]/", $t, $result);

我试图让@character包含在内的任何事情都失败了......

preg_match_all("/[\@([^]]+)]/", $t, $result);
4

2 回答 2

3

代码:

$str = 'hello, this is [@firstname], i am [@age] years old';
preg_match_all('~\[@(.+?)\]~', $str, $matches);
print_r($matches);

输出:

Array
(
    [0] => Array
        (
            [0] => [@firstname]
            [1] => [@age]
        )
    [1] => Array
        (
            [0] => firstname
            [1] => age
        )
)
于 2013-09-10T17:59:13.463 回答
-1
<?php
$string = "hello, this is [@firstname], i am [@age] years old";
$pattern = '#\[@(.*?)\]#';
preg_match_all($pattern, $string, $matches);
print_r($matches[1]);
?>

Array
(
    [0] => firstname
    [1] => age
)
于 2013-09-10T18:01:08.233 回答