【发布时间】:2014-04-05 23:38:02
【问题描述】:
我在 PHP 脚本中使用 file_get_contents() 以使用 preg_match_all() 按出现顺序自动列出变量名称,然后使用 array_filter() 按首次出现过滤它们。我需要能够捕获以下格式的变量(其中任何变量名称都包含字符[a-zA-Z_-\d]):
//standard variables
$variable
到目前为止,我已经编写了一个简单的正则表达式,它符合我对这个独立变量的所有要求:[a-zA-Z_-\d]
//arrays
$array[0]
$array2[$key]
//form and session variables
$_GET['frm']
$_SESSION['user']
$_POST[$var]
etc...
我已经尝试自己处理数组和(表单/会话)变量,并且得到了 ([$][a-zA-Z_-\d]+\[?\'?[$]?[a-zA-Z_-\d]+\'?\]?) 的表达式,请参阅 http://regex101.com/r/dO8tI2 以了解我是如何做到这一点的。但是我现在正在捕捉我不想要的东西(而且我不确定如何调整这个......) - 即匹配 7 上的括号,我如何只选择文本 $test 而不是 $test]如果没有开始[。 - 变量变量也以此类推...
//variable variables
${$var."a"}
${$var.$var2}
${"a"."b"}
${$var."a".$var3}
etc...
如果在上面的示例中使用了字符“,那么也需要接受字符 '。
由于我对正则表达式相当陌生,并且在我的表达式步骤中被困在上面的超链接点,有人可以编写一个符合上述标准的单个正则表达式并简要解释它是如何工作的吗?
我尝试过使用 OR | 运算符和未捕获组(?; 条件...),但我正在绕圈子。
【问题讨论】:
标签: php regex variables file-get-contents