php对nesc编译后的文件处理

Posted heshengjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php对nesc编译后的文件处理相关的知识,希望对你有一定的参考价值。

<?php
$f_output = fopen("app_out.c","w");
$f_input = fopen("app.c","r");
while (!feof($f_input)) while (!feof($f_input))
{
    $next_match = 1;
  $line = fgets($f_input);
  // 1、代码位置信息(如:# 19 、#line 22)
  $pattern = ‘/(^(#line\s\d+))|(^(#\s\d+)(.*))/‘;
  // $replacement = ‘// ${0}‘;
  $replacement = ‘‘;
  $r =  preg_match($pattern, $line);
  if($r )
  {
      $line =  preg_replace($pattern, $replacement, $line);
      break;
  }
  
  // 2、内联函数标志信息(如: inline )
  $pattern = ‘/(\b__inline\b)|(__inline\b)/‘;
  // $replacement = ‘/* ${0} */‘;
  // $replacement = ‘inline‘;
  $replacement = ‘‘;
  $r =  preg_match($pattern, $line);
  if($next_match && $r )
  {
      $line = preg_replace($pattern, $replacement, $line);
      $next_match = 0;
  }
  
  
  // 3、$符号的处理
  $contents = $line;
  $pattern = ‘/(\w+)(\$)(\w+)/‘;
  $replacement = ‘${1}__${3}‘;
  $matchCount = 0;
  while($next_match)
  {
      $r =  preg_match($pattern, $contents);
      if($r )
      {
          $matchCount++;
          $contents =  preg_replace($pattern, $replacement, $contents);
      }
      else
      {
          if( $matchCount == 0 )
          {
              break;
          }
          $line = $contents;
          $next_match = 0;
          break;      
      }
  }
  fputs($f_output,$line);
}
fclose($f_input);
fclose($f_output);
?>

 

以上是关于php对nesc编译后的文件处理的主要内容,如果未能解决你的问题,请参考以下文章

如何记录服务器对php代码的处理?如何反编译php代码?

PHP 缓存加速

代码编译-反编译-解混淆

深入理解PHP原理之Opcodes

php 代码的编译

变量,循环控制语句