想要在php中匹配模式

时间:2013-04-24 09:16:05

标签: php regex

我想匹配以下字符串的模式: (字符串是动态的意思是我从html表单请求它,因此它可能每次都是新的,但字符串的格式将始终相同)

实际上我想要在每个请求中可能不同的关键字(姓名,工资,帐户)

$str="$(name) is $(salary) and $(account)";
if(preg_match_all("/\$\((.+?)\)/is",$str,$arrmsgvar,PREG_SET_ORDER)){
    echo "<pre>";
    print_r($arrmsgvar);
    echo "</pre>";
}

我正在编写正则表达式以匹配该模式但未获得成功。有人请告诉我上面代码的正确的正则表达式?

2 个答案:

答案 0 :(得分:3)

您的正则表达式(如果您想确定,也会搜索字符串)应该是单引号。

使用双引号,PHP将正则表达式解释为:

/$\((.+?)\)/
 ^
missing backslash here

此代码应该可以正常工作。

<?php

$str='$(name) is $(salary) and $(account)';
if(preg_match_all('/\$\((.+?)\)/',$str,$arrmsgvar,PREG_SET_ORDER)){
    echo "<pre>";
    print_r($arrmsgvar);
    echo "</pre>";
}

Proof

答案 1 :(得分:0)

此正则表达式将返回一个包含三个值的数组

"/\$\((\w+)\)/"

preg_match_all("/\$\((\w+)\)/",$str,$arrmsgvar);

Array
(
[0] => Array
    (
        [0] => $(name)
        [1] => $(salary)
        [2] => $(account)
    )

[1] => Array
    (
        [0] => name
        [1] => salary
        [2] => account
    )

)