【发布时间】:2013-10-24 10:07:04
【问题描述】:
如何使用preg_match 找到所有 PHP 变量。我做了以下正则表达式:
$string = 'Hallo $var. blabla $var, $iam a var $varvarvar gfg djf jdfgjh fd $variable';
$instring = array();
preg_match_all('/\$(.*?)/', $string, $instring);
print_r($instring);
我只是不明白正则表达式是如何工作的。
【问题讨论】:
-
这适用于
regex,但不适用于PHP。示例:$%#将被捕获 - 但它不是有效的 php 变量。您可以限制为字母数字$([\w\d]+)- 但随后${'foo'}将无法通过检查。结论 - 尝试使用正则表达式实现语法解析是一个坏主意 -
@Alma Do Mundo:“感谢”这里的非贪婪匹配,星形重复的零字符匹配已经做到了。坏主意说明实际上非常值得,我也可以将这个角度放入我的答案中,并可能提供指向 PHP Parser 的链接。
-
token_get_all()也可以。只需按T_VARIABLE过滤结果即可
标签: php regex preg-match