查找并连接模式的结果


Find and concatenate result in a pattern

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

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

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

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

你可以尝试使用get_defined_vars()进行一些操作。但是,此函数还会列出全局变量。如果您不需要它们,可以使用此代码段删除它们并仅显示您定义的变量

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

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

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

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

仅保留变量名称 删除其余所有内容。 使用

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

清理文件,以便只留下变量名称。 然后再做几次查找和替换,以将变量名称转换为所需的形式。

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

'$[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]*