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


Posted in PHP onNovember 03, 2016

测试代码

文件: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(removeComment(file_get_contents('./a.php')));

/**
 * 去除PHP代码注释
 * @param string $content 代码内容
 * @return string 去除注释之后的内容
 */
function removeComment($content){
 return preg_replace("/(\/\*.*\*\/)|(#.*?\n)|(\/\/.*?\n)/s", '', str_replace(array("\r\n", "\r"), "\n", $content));
}

测试输出

执行test.php,输出如下:

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

正则分析

(\/\*.*\*\/) 匹配 /* */
(#.*?\n)  匹配 #  遇到第一个回车后结束
(\/\/.*?\n) 匹配 //  遇到第一个回车后结束

三水点靠木小编继续补充一下:

多行注释

<?php 
 
$s = '/*aaaa 
sss 
*/*/'; 
 
preg_match('@/\*.*?\*/@s', $s, $match); 
 
var_dump($match);

运行结果

array(1) {
 [0]=>
 string(15) "/*aaaa 
sss 
*/"
}

匹配单行注释

<?php 
$str = "  
a = b; //asdf //saf 
b = c; //asdf 
  "; 
$reg = '@\s*//.*$@m'; 
 
$res = preg_replace($reg,'',$str); 
 
echo $res;

输出

a = b; 
b = c;

再来一个lua版的

local test = "int x; /* xx */ xx*/ int y; /* y */" 
 
function string.gfind(test, patten) 
 local i,j = 0,0; 
 return function() 
  i,j = string.find(test, patten, j+1) 
  if(i == nil) then -- end find 
   return nil  
  end  
  return string.sub(test, i, j) 
 end  
end 
 
 
for v in string.gfind(test, "/%*.-%*/") do 
 print(v) 
end

输出
/* xx */
/* y */

phpstorm 正则匹配删除注释行(替换注释行为空行)

使用phpstorm 来编写php 和javascript 代码,感觉还是不错的,用得也很舒服。

遇到了一个需求,有时候在阅读框架源代码的时候 , 想过滤(删除)掉源代码中的注释行,如果手动逐行删除显示不够科学。

当然想到了强大的正则匹配(regExp regular expression), 通过写一个正则表达式,来查找出所有的注释行,并将其替换成空,即实现了需求。

1. ctrl + F , 输入正则表达式:(\/\/.*$)|(\/\*(.|\s)*?\*\/)

2. ctrl + R, 不输入:

3. 点击后面的 Replace all

但发现,这样并没有完全实现我们的需求,只是将注释行替换成了空行。

所以,下面我们再写一个正则表达式, 将空行匹配出来,删掉。

1.ctrl + F, 输入正则表达式: ^\n

2.ctrl + R, 不输入

3.点击后面的 Replace all

但发现,还是并没有全部删掉空行。(还有一些空行没删掉)

所以,我们继续来一个正则匹配删除。

1.ctrl + F, 输入正则表达式: \s\n

2.ctrl + R, 不输入

3.点击后面的 Replace all

好的,到这里,所有的空行全部删除。 开心一下 -:)

其实,这三步应该可以合成一步实现的,大家可以想一想!

以上就是小编为大家带来的使用正则去除php代码中的注释方法全部内容了,希望大家多多支持三水点靠木~

PHP 相关文章推荐
一个php作的文本留言本的例子(六)
Oct 09 PHP
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
Sep 24 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
Aug 09 PHP
Thinkphp中import的几个用法详细介绍
Jul 02 PHP
php实现的mongodb操作类
May 28 PHP
php比较两个字符串长度的方法
Jul 13 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
Dec 21 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
Apr 11 PHP
Thinkphp框架开发移动端接口(2)
Aug 18 PHP
php 基础函数
Feb 10 PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 PHP
PHP date_default_timezone_set()设置时区操作实例分析
May 16 PHP
php cookie 详解使用实例
Nov 03 #PHP
PHP使用curl制作简易百度搜索
Nov 03 #PHP
php 防止表单重复提交两种实现方法
Nov 03 #PHP
PHP HTTP 认证实例详解
Nov 03 #PHP
php将print_r处理后的数据还原为原始数组的解决方法
Nov 02 #PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
Nov 02 #PHP
php 使用redis锁限制并发访问类示例
Nov 02 #PHP
You might like
php calender(日历)二个版本代码示例(解决2038问题)
2013/12/24 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
上传的js验证(图片/文件的扩展名)
2013/04/25 Javascript
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
全面解读Python Web开发框架Django
2014/06/30 Python
python继承和抽象类的实现方法
2015/01/14 Python
使用Python脚本将文字转换为图片的实例分享
2015/08/29 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
python学习教程之使用py2exe打包
2017/09/24 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
Django的Modelforms用法简介
2019/07/27 Python
澳大利亚的奢侈品牌:Oroton
2016/08/26 全球购物
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
物业品质提升方案
2014/06/08 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js