视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
如何通过php正则去掉注释
2020-11-02 18:22:15 责编:小采
文档


php正则去掉注释的实现方法:首先创建PHP示例文件;然后通过正则表达式“reg_replace("/(/*.**/)|(#.*? )|(//.*? )/s", '', str_replace((...))”实现去除即可。

推荐:《PHP视频教程》

测试代码

文件: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("/(/*.**/)|(#.*? )|(//.*? )/s", '', str_replace(array(" ", " "), " ", $content));
}

测试输出

执行test.php,输出如下:

正则分析

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

继续补充一下:

多行注释

<?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, 输入正则表达式: ^

2.ctrl + R, 不输入

3.点击后面的 Replace all

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

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

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

2.ctrl + R, 不输入

3.点击后面的 Replace all

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

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

下载本文
显示全文
专题