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
      GET
      ,我想将php文件中的所有全局变量替换为
      $var
      ,,请参阅
      示例.php
      之前和之后的内容。我知道,这就是为什么我在评论中写了我的建议,而不是回答。谢谢@Mark Overton,如果您知道如何在php上下文文件中自动替换它们,请提供信息,为什么要这样做?请您将此代码反映到我的示例中,并显示start from
      foreach
      循环如何将所有全局变量替换为
      $var
      。为了更清楚,我在问题中添加了一个注释,我希望
      example.php
      文件看起来像“$firstname=$var;”,请看一下这个问题是的,没错。但是
      example.php
      没有改变@Toto@AbdallaWasef:只需将
      $lines
      数组中包含的所有行写入outputfile。不是我,我仍然不会投票给任何人。。其他人对所有行写入输出文件是什么意思?我试过:
      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);