Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在模式中查找并连接结果_Php_Regex_Visual Studio 2010_Textmate_Replace - Fatal编程技术网

Php 在模式中查找并连接结果

Php 在模式中查找并连接结果,php,regex,visual-studio-2010,textmate,replace,Php,Regex,Visual Studio 2010,Textmate,Replace,我有一个很长的PHP文件,我只想复制所有变量名并构建一个insert sql查询。有没有一种方法可以让我使用正则表达式搜索模式并连接查找结果,直到我收集了所有变量并将其吐出到语句中 我使用TextMate,熟悉正则表达式搜索。正则表达式搜索结果给出$0、$1等参数。但我不知道这是否可能。任何编辑器中的解决方案都不仅仅是文本匹配 我有太多的变量(+100),不想复制每一个变量。这是我的样本文件 $ID = $_POST['id']; $TXN_TYPE = $_POST['txn_type'];

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

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

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

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

我自己的解决办法是,反其道而行之。这是不可能的

只保留变量名,删除所有其他变量名。使用

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

清理文件,以便只剩下变量名。然后再进行几次查找和替换,以获得所需的形式的变量名。

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

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

然而,这段代码会产生通知,我还没有找到解决方法

如果只有$\u POST变量,则可以循环使用$\u POST数组本身
在数组中循环时以编程方式创建SQL。

如果希望只匹配变量名(而不是
$\u POST
数组索引),则几乎可以提供正则表达式:

当然,这将包括$u POST,但这应该很容易删除。如果没有,您可以使用负前瞻(如果TextMate支持):


值得注意的是,如果PHP文件包含像
$asdf='asdfklasdflkj$asdfasdf'。我猜情况并非如此,但如果您想要更强大的功能,最好避免使用正则表达式,而采用更像Constantine的解决方案。不过,我已经使用了自己的解决方案。
\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
\$(?!_POST($|[^a-zA-Z0-9_\x7f-\xff]))[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*