Php 如何用另一个变量替换所有全局变量?
我试图将示例中的所有全局变量替换为特定值Php 如何用另一个变量替换所有全局变量?,php,regex,replace,str-replace,regular-language,Php,Regex,Replace,Str Replace,Regular Language,我试图将示例中的所有全局变量替换为特定值$var,如下例所示: (example.php) 将任何全局变量替换为$var后的预期结果如下: (example.php) 注意:这就是我希望php文件的样子 解决方案: $file = file_get_contents("example.php"); $lines = explode("\n", $file); foreach($lines as $key => $value) $$key = $value; 以下代码将把$\u请求['
$var
,如下例所示:
(example.php)
将任何全局变量替换为$var
后的预期结果如下:
(example.php)
- 注意:这就是我希望php文件的样子李>
- 解决方案:
以下代码将把$file = file_get_contents("example.php"); $lines = explode("\n", $file); foreach($lines as $key => $value) $$key = $value;
转换为$\u请求['thisvar']
,以及您设置的任何其他$thisvar
/$\u GET
变量 如注释$\u POST
中所述,包括$\u REQUEST
和$\u GET
$\u POST
如果我修改您的示例:foreach($_REQUEST as $key => $value) $$key = $value;
这就是你想要的吗$file = file_get_contents("example.php"); $lines = explode("\n", $file); foreach($lines as $key => $value) $$key = $value;
$file = file_get_contents("example.php"); $lines = explode("\n", $file); $var = '$var'; foreach ($lines as $key => &$value) { if(strpos($value, '$_GET') !== false){ $value = preg_replace('/\$_GET\[.+?\]/', $var, $value); } elseif(strpos($value, '$_POST') !== false){ $value = preg_replace('/\$_POST\[.+?\]/', $var, $value); } elseif(strpos($value, '$_REQUEST') !== false){ $value = preg_replace('/\$_REQUEST\[.+?\]/', $var, $value); } }
将匹配,例如,/\$(GET | POST | REQUEST)\[[^\]*\]/'
我们所要做的就是将其替换为$\u GET[anything-not-a-right-bracket]
并重写文件:$var
<?php $file = file_get_contents("example.php"); $file = preg_replace('/\$_(GET|POST|REQUEST)\[[^\]]*\]/', '$var', $file); file_put_contents("example.php", $file);
$\u请求与执行$\u GET或$\u POST相同,因此您可能只需要使用$\u请求而不是其他两个。我的问题不是关于
或REQUEST
或POST
,我想将php文件中的所有全局变量替换为GET
,,请参阅$var
之前和之后的内容。我知道,这就是为什么我在评论中写了我的建议,而不是回答。谢谢@Mark Overton,如果您知道如何在php上下文文件中自动替换它们,请提供信息,为什么要这样做?请您将此代码反映到我的示例中,并显示start from示例.php
循环如何将所有全局变量替换为foreach
。为了更清楚,我在问题中添加了一个注释,我希望$var
文件看起来像“$firstname=$var;”,请看一下这个问题是的,没错。但是example.php
没有改变@Toto@AbdallaWasef:只需将example.php
数组中包含的所有行写入outputfile。不是我,我仍然不会投票给任何人。。其他人对所有行写入输出文件是什么意思?我试过:$lines
file\u put\u contents(“example.php”,introde(“\n”,$lines))代码>但不会更改文件中的任何内容警告:文件\u put\u contents()至少需要2个参数,其中1个参数在
$file = file_get_contents("example.php"); $lines = explode("\n", $file); foreach($lines as $key => $value) $$key = $value;
$file = file_get_contents("example.php"); $lines = explode("\n", $file); $var = '$var'; foreach ($lines as $key => &$value) { if(strpos($value, '$_GET') !== false){ $value = preg_replace('/\$_GET\[.+?\]/', $var, $value); } elseif(strpos($value, '$_POST') !== false){ $value = preg_replace('/\$_POST\[.+?\]/', $var, $value); } elseif(strpos($value, '$_REQUEST') !== false){ $value = preg_replace('/\$_REQUEST\[.+?\]/', $var, $value); } }
<?php $file = file_get_contents("example.php"); $file = preg_replace('/\$_(GET|POST|REQUEST)\[[^\]]*\]/', '$var', $file); file_put_contents("example.php", $file);