使用正则去除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模拟HTTP认证
Oct 09 PHP
php采集时被封ip的解决方法
Aug 29 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
Dec 19 PHP
PHP实现文件下载断点续传详解
Oct 15 PHP
ThinkPHP在新浪SAE平台的部署实例
Oct 31 PHP
php提取字符串中网站url地址的方法
Dec 03 PHP
thinkphp中ajax与php响应过程详解
Dec 08 PHP
Linux系统下php获得系统分区信息的方法
Mar 30 PHP
5款适合PHP使用的HTML编辑器推荐
Jul 03 PHP
thinkPHP交易详情查询功能详解
Dec 02 PHP
PHP写API输出的时用echo的原因详解
Apr 28 PHP
Laravel+Intervention实现上传图片功能示例
Jul 09 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
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
PHP中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
php接口和抽象类使用示例详解
2014/03/02 PHP
PHP中大于2038年时间戳的问题处理方案
2015/03/03 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
2016/05/20 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
解放web程序员的输入验证
2006/10/06 Javascript
javascript高级学习笔记整理
2011/08/14 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能
2017/03/27 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
vue 解决form表单提交但不跳转页面的问题
2019/10/30 Javascript
详解JavaScript数据类型和判断方法
2020/09/04 Javascript
小程序实现tab标签页
2020/11/16 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
python yield和Generator函数用法详解
2020/02/10 Python
python中sort sorted reverse reversed函数的区别说明
2020/05/11 Python
python 如何调用远程接口
2020/09/11 Python
Python读写锁实现实现代码解析
2020/11/28 Python
小学教师国培感言
2014/02/08 职场文书
经济类毕业生求职信
2014/06/26 职场文书
促销活动总结模板
2014/07/01 职场文书
学校党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
【超详细】八大排序算法的各项比较以及各自特点
2021/03/31 Python