使用正则去除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 相关文章推荐
VML绘图板②脚本--VMLgraph.js、XMLtool.js
Oct 09 PHP
PHP脚本的10个技巧(6)
Oct 09 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
php语言流程控制中的主动与被动
Nov 05 PHP
解析php中获取url与物理路径的总结
Jun 21 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
Sep 28 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
php实现通用的从数据库表读取数据到数组的函数实例
Mar 21 PHP
PHP中的一些常用函数收集
May 26 PHP
分享php多功能图片处理类
May 15 PHP
PHP常用字符串函数小结(推荐)
Aug 05 PHP
PHP实现微信提现(企业付款到零钱)
Aug 01 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
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
jquery ui dialog里调用datepicker的问题
2009/08/06 Javascript
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
React-redux实现小案例(todolist)的过程
2019/09/29 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
vscode 配置vue+vetur+eslint+prettier自动格式化功能
2020/03/23 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python实现字典的遍历与排序功能示例
2017/12/23 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
Python判断有效的数独算法示例
2019/02/23 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
python程序如何进行保存
2020/07/03 Python
Python3爬虫中pyspider的安装步骤
2020/07/29 Python
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
美国儿童服装、家具和玩具精品店:Maisonette
2019/11/24 全球购物
Servlet如何得到客户端机器的信息
2014/10/17 面试题
2013届毕业生求职信范文
2013/11/20 职场文书
学生实习推荐信范文
2013/11/26 职场文书
即将毕业大学生自荐信
2014/01/24 职场文书
机票销售员态度不好检讨书
2014/09/27 职场文书
MySQL中日期型单行函数代码详解
2021/06/21 MySQL
PostgreSQL13基于流复制搭建后备服务器的方法
2022/01/18 PostgreSQL
如何避免mysql启动时错误及sock文件作用分析
2022/01/22 MySQL