去除PHP代码中的空白和注释

   PHP内置了一个php_strip_whitespace方法用于读取php文件并去除代码中的空白和注释,但不支持直接读取内容去除空白和注释,下面的方法则可以支持读取字符串内容,并且ThinkPHP框架内置了该方法。

  /**

  * 去除代码中的空白和注释

  * @param string $content 代码内容

  * @return string

  */

  function strip_whitespace($content) {

  $stripStr = '';

  //分析php源码

  $tokens = token_get_all($content);

  $last_space = false;

  for ($i = 0, $j = count($tokens); $i < $j; $i++) {

  if (is_string($tokens[$i])) {

  $last_space = false;

  $stripStr .= $tokens[$i];

  } else {

  switch ($tokens[$i][0]) {

  //过滤各种PHP注释

  case T_COMMENT:

  case T_DOC_COMMENT:

  break;

  //过滤空格

  case T_WHITESPACE:

  if (!$last_space) {

  $stripStr .= ' ';

  $last_space = true;

  }

  break;

  case T_START_HEREDOC:

  $stripStr .= "<<

  break;

  case T_END_HEREDOC:

  $stripStr .= "THINK;n";

  for($k = $i+1; $k < $j; $k++) {

  if(is_string($tokens[$k]) && $tokens[$k] == ';') {

  $i = $k;

  break;

  } else if($tokens[$k][0] == T_CLOSE_TAG) {

  break;

  }

  }

  break;

  default:

  $last_space = false;

  $stripStr .= $tokens[$i][1];

  }

  }

  }

  return $stripStr;

  }

时间: 2024-12-31 19:57:32

去除PHP代码中的空白和注释的相关文章

使用正则去除php代码中的注释方法_php实例

测试代码 文件:a.PHP <?php /** * 加法计算 * 测试 */ // 设定$a的值 $a = 10; // 设定$b的值 $b = 5; // 加法 $c = $a + $b; # 输出结果 echo $c; 文件:test.php echo "源码:<br />"; show_source('./a.php'); echo "<hr />去除注释后:<br />"; highlight_string(remo

去除HTML代码中所有标签的两种方法_应用技巧

去除HTML代码中所有标签 复制代码 代码如下: <% '****************************** '函数:RemoveHTML_A(strText) '参数:strText,待处理的字符串 '作者:阿里西西 '日期:2007/7/12 '描述:去除HTML代码中所有标签 '示例:<%=RemoveHTML_A("<b>欢迎光临阿里西西</b>")%> '****************************** Func

去除HTML代码中所有标签的两种方法

去除HTML代码中所有标签 复制代码 代码如下: <% '****************************** '函数:RemoveHTML_A(strText) '参数:strText,待处理的字符串 '作者:阿里西西 '日期:2007/7/12 '描述:去除HTML代码中所有标签 '示例:<%=RemoveHTML_A("<b>欢迎光临阿里西西</b>")%> '****************************** Func

代码优化——去除你代码中的if...else...层层嵌套

首先来看问题代码: public static String query(){ if(1==1){ if(2==2){ if(3==3){ if(4==4){ int b=0; for(int i=0;i<10000;i++){ if(i<10){ continue; }else{ b+=i; return String.valueOf(b); } } }else{ return ""; } }else{ return ""; } }else{ retu

代码中到底应不应当写注释?_相关技巧

当很多前辈教育后辈应当多写注释的时候,当网络上充满了有关程序员从不写注释的段子的时候,这是一个非常有争议的话题.作为一个标题党,容我先修正一下我的观点:我认为如果代码写得足够好,那么大多数注释是多余的,我们应该通过写出更好的代码来代替更多注释. 注释的确有其用途,但大部分情况下,程序员在滥用注释.我是反对夹杂在代码间的注释的,我认为注释应当从代码中独立出来--通常被称为文档. 请看下面一段代码. 复制代码 代码如下: /* /static/market/checkout.js 2014.7.2

Tiger中的注释,第1部分: 向Java代码中添加元数据

编程的一个最新的趋势,尤其是在 Java 编程方面,是使用 元数据.简单地说,元数据就是 关于数据的数据.元数据可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查.许多元数据工具,如 XDoclet(请参阅 参考资料),将这些功能添加到核心 Java 语言中,暂时成为 Java 编程功能的一部分. 直到可以使用 J2SE 5.0(也叫做 Tiger,现在是第二个 beta 版本),核心 Java 语言才最接近具有 Javadoc 方法的元数据工具.您使用特殊的标签集合来标记代码,并执行

HTML代码中标签的全部属性 中文注释说明_基础知识

例:写一段图片HTML代码 <img src="http://localhost/phpwind6/zx/6.jpg" id="imgs" lang="en-us" alt="测试"> 该标签为img的代码中已可以看出已含有了四个属性,包括src id lang alt,加上本身的img标签有5个属性. 那么该img标签在正常的情况下倒底还含有多个属性?(包含对象),我现在为大家一一列出来(以上面那句代码为例,并附

【我的Android进阶之旅】Android 源代码中的Java代码中//$NON-NLS-1$ 注释是什么意思?

1.背景 最近在负责公司基础业务和移动基础设施的开发工作,正在负责Lint代码静态检查工作.因此编写了自定义的Lint规则,在编写自定义的Lint规则前,当然是需要去把Google的关于Lint检测的源代码看一遍学习学习如何编写自定义规则. google官方的lint源代码链接为: https://android.googlesource.com/platform/tools/base/+/master/lint/libs/lint-checks/src/main/java/com/androi

注释-C++下面一段代码中的if的情况感觉不懂

问题描述 C++下面一段代码中的if的情况感觉不懂 #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct node{ int data; struct node *prior; struct node *next; } node;//双向链表结构体定义 int main() { node *num1,*num2,*sum; node *create(node *n); int