0

我有一个很长的PHP 文件,我只想复制所有变量名并构建一个插入 sql 查询。有没有一种方法可以使用正则表达式搜索模式并将查找结果连接起来,直到我收集所有变量并在语句中将其吐出?

我正在使用 TextMate 并且熟悉正则表达式搜索。正则表达式搜索结果给出 $0、$1 等参数。不知道这是否可能。任何编辑器中的解决方案都不会只是文本匹配。

我有太多变量(+100)不想复制每一个。这是我的示例文件

$ID = $_POST['id'];
$TXN_TYPE = $_POST['txn_type'];
$CHARSET = $_POST['charset']
$CUSTOM = $_POST['custom'];
4

3 回答 3

1

您可以尝试使用 get_defined_vars()。然而,这个函数也列出了 GLOBAL 变量。如果您不想要它们,可以使用此代码段删除它们并仅显示您定义的变量

$variables = array_diff(get_defined_vars(), array(array()));

但是这个片段会生成通知,我还没有找到解决它们的方法。

如果您只有 $_POST 变量,您可以循环遍历 $_POST 数组本身 您在循环遍历数组时以编程方式创建 SQL。

于 2012-05-27T20:34:54.510 回答
0

我自己的解决方案是,做相反的事情。这可能是不可能的。

只保留变量名删除所有其余的。利用

[space].+  regex to remove everything that is after the variable name.

清理文件,以便只留下变量名。然后再做几个查找和替换,以您想要的形式带来变量名称。

于 2012-05-27T20:27:48.697 回答
0

如果您只想匹配变量名(而不是数组索引),那么PHP 文档$_POST中几乎提供了正则表达式:

\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

当然,这将包括 $_POST,但这应该很容易删除。如果没有,你可以用负前瞻来做(如果 TextMate 支持它):

\$(?!_POST($|[^a-zA-Z0-9_\x7f-\xff]))[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
于 2012-05-27T20:41:37.200 回答