我有一个很长的PHP文件,我只想复制所有的变量名,并构建一个insert sql查询。是否有一种方法可以使用正则表达式搜索模式并将查找结果连接起来,直到我收集所有变量并在语句中将其吐出?
我正在使用TextMate,并且熟悉正则表达式搜索。Regex搜索结果提供$0、$1等参数。但不知道这是否可能。任何编辑器中的解决方案都不只是文本匹配。
我只是有太多的变量(+100)这里是我的样本文件
$ID = $_POST['id'];
$TXN_TYPE = $_POST['txn_type'];
$CHARSET = $_POST['charset']
$CUSTOM = $_POST['custom'];
发布于 2012-05-27 12:34:54
您可以使用get_defined_vars()尝试一些东西。但是,该函数还列出了全局vars。如果不需要,可以使用此代码段删除它们,并且只显示您定义的var。
$variables = array_diff(get_defined_vars(),array(array();
然而,这个片段会生成通知,而我还没有找到解决它们的方法。
如果只有$_POST变量,则可以循环遍历$_POST数组本身,在遍历数组时以编程方式创建SQL。
发布于 2012-05-27 12:27:48
我自己的解决办法是,做相反的事情。这可能是不可能的。
只保留变量名,移除其余的变量名。使用
[space].+ regex to remove everything that is after the variable name.
清理文件,以便只留下变量名。然后再做几次查找和替换,以将变量名以您想要的形式带来。
发布于 2012-05-27 12:41:37
如果您只想匹配变量名(而不是$_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]*
https://stackoverflow.com/questions/10776857
复制