从某种模式中获取变量

时间:2012-07-09 08:50:13

标签: php variables preg-replace pattern-matching

我需要将每对花括号之间的数字保存为变量。

{2343} -> $number
echo $number;
Output = 2343

我不知道如何做' - >'一部分。

我发现了一个类似的功能,但它只是删除了大括号而没有其他功能。

preg_replace('#{([0-9]+)}#','$1', $string);

我可以使用任何功能吗?

2 个答案:

答案 0 :(得分:1)

您可能希望将preg_match用于捕获:

$subject = "{2343}";
$pattern = '/\{(\d+)\}/';
preg_match($pattern, $subject, $matches);
print_r($matches);

输出:

Array
(
    [0] => {2343}
    [1] => 2343
)

$matches数组将包含索引1的结果(如果找到),所以:

if(!empty($matches) && isset($matches[1)){
    $number = $matches[1];
}

如果您的输入字符串可以包含许多数字,请使用preg_match_all:

$subject = "{123} {456}";
$pattern = '/\{(\d+)\}/';
preg_match_all($pattern, $subject, $matches);
print_r($matches);

输出:

Array
(
    [0] => Array
        (
            [0] => {123}
            [1] => {456}
        )

    [1] => Array
        (
            [0] => 123
            [1] => 456
        )
)

答案 1 :(得分:0)

$string = '{1234}';
preg_replace('#{([0-9]+)}#e','$number = $1;', $string);
echo $number;