我想匹配以下字符串的模式: (字符串是动态的意思是我从html表单请求它,因此它可能每次都是新的,但字符串的格式将始终相同)
实际上我想要在每个请求中可能不同的关键字(姓名,工资,帐户)
$str="$(name) is $(salary) and $(account)";
if(preg_match_all("/\$\((.+?)\)/is",$str,$arrmsgvar,PREG_SET_ORDER)){
echo "<pre>";
print_r($arrmsgvar);
echo "</pre>";
}
我正在编写正则表达式以匹配该模式但未获得成功。有人请告诉我上面代码的正确的正则表达式?
答案 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>";
}
答案 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
)
)