使用正则去除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 和 MySQL 开发的 8 个技巧
Jan 02 PHP
PHP无限分类的类
Jan 02 PHP
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
Sep 09 PHP
在VS2008中编译MYSQL5.1.48的方法
Jul 03 PHP
php设计模式 Mediator (中介者模式)
Jun 26 PHP
php实现的css文件背景图片下载器代码
Nov 11 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
Jan 07 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
Jan 07 PHP
php生成mysql的数据字典
Jul 07 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 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正则
2006/07/07 PHP
php 地区分类排序算法
2013/07/01 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
thinkPHP5.0框架命名空间详解
2017/03/18 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
JS中改变this指向的方法(call和apply、bind)
2016/03/26 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
js实现二级导航功能
2017/03/03 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
nuxt+axios解决前后端分离SSR的示例代码
2017/10/24 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
python list语法学习(带例子)
2013/11/01 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
详解python中eval函数的作用
2019/10/22 Python
Pytorch .pth权重文件的使用解析
2020/02/14 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
C# .NET面试题
2015/11/28 面试题
编程输出如下图形
2013/11/24 面试题
2014年教研活动总结范文
2014/04/26 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
Redis安装使用RedisJSON模块的方法
2022/03/23 Redis
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis