使用正则去除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 相关文章推荐
通过文字传递创建的图形按钮
Oct 09 PHP
php自动跳转中英文页面
Jul 29 PHP
PHP使用数组实现队列
Feb 05 PHP
php实现在线生成条形码示例分享(条形码生成器)
Dec 30 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
Oct 20 PHP
PHP之图片上传类实例代码(加了缩略图)
Jun 30 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
Oct 11 PHP
PHP+Ajax无刷新带进度条图片上传示例
Feb 08 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
实例讲解PHP表单处理
Feb 15 PHP
Laravel框架控制器的request与response用法示例
Sep 30 PHP
laravel 错误处理,接口错误返回json代码
Oct 25 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
javascript 小型动画组件与实现代码
2010/06/02 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
PHP连接MySQL数据库并以json格式输出
2018/05/21 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
javascript Array.prototype.slice的使用示例
2013/11/14 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
编写简单的jQuery提示插件
2014/12/21 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
JavaScript 实现继承的几种方式
2021/02/19 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python求素数示例分享
2014/02/16 Python
用Python编写一个国际象棋AI程序
2014/11/28 Python
Python与shell的3种交互方式介绍
2015/04/11 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
企业给企业的表扬信
2014/01/13 职场文书
委托协议书范本
2014/04/22 职场文书
学生安全承诺书
2014/05/22 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
导游词格式
2015/02/13 职场文书
深入理解python协程
2021/06/15 Python
Redis中一个String类型引发的惨案
2021/07/25 Redis
mysql的Buffer Pool存储及原理
2022/04/02 MySQL
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android