问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php使用正则表达式去掉html中的注释方法

发布网友 发布时间:2022-04-23 09:29

我来回答

2个回答

懂视网 时间:2022-04-06 05:27

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

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

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

热心网友 时间:2022-04-06 02:35

最近在项目中在需要输出浏览器中的源文件需要去掉html中的注释,在网上看了很多的方案,不过很多的答案都是一样的,并不能解决我的问题,于是就自己写正则表达式,也对正则有了更加深刻的理解。
首先比较基础的是:
$a
=
'<!--ceshi-->ceshi';
$a
=
preg_replace('#<!--.*-->#'
,
''
,
$a);
var_mp($a);
上面的代码会输出ceshi。
但是如果是下面的字符串的话,就不能达到我们希望的效果了
$a
=
'<!--ceshi-->ceshi<!--ceshi-->';
$a
=
preg_replace('#<!--.*-->#'
,
''
,
$a);
var_mp($a);
于是我们就把匹配规则改成如下的格式
preg_replace('#<!--.*?-->#'
,
''
,
$a);
但是在html中如果有<!--[if
lt
IE
9]>ceshi<![endif]-->这样的代码的话是不能去掉的,所以我们需要改进匹配规则,改成以下的格式
preg_replace('#<!--[^\!\[]*?-->#'
,
''
,
$a);
又接着如果html中有<script><!--ceshi//--></script>的代码,我们又需要改一下我们的匹配规则了,改成了以下格式
preg_replace('#<!--[^\!\[]*?(?<!\/\/)-->#'
,
''
,
$a);
这样的话我基本上就去掉了我需要去掉的html的注释了!
以上就是小编为大家带来的php使用正则表达式去掉html中的注释方法全部内容了,希望大家多多支持脚本之家~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? PHP的优缺点是什么? 梦见两只大狗和一只小狗追咬自己 最后被一只小狗咬到自己的脖子预示什么... 梦见两条大狗两条小狗对我看 PHP这么多函数该怎么学? 梦到有两只小狗一只大狗对我叫,我用石头砸小狗,却怎么也砸不到,这是个什么梦。今天又做了个梦 ,梦到 周公解梦 梦见一条大狗和两三只小狗 大狗嘴上封着 梦到2只大狗对我很凶想咬我? 我梦见两条狗,一条大狗一直冲我叫,另一只小狗见到我摇头摆尾的请问,这 ... 梦见别人给我带来二个大狗好多小狗 梦见两只狗上床,其中大狗追着亲我? 蕃茄炒蛋感动的味道作文 梦见被两只大狗追是什么意思? 梦见俩个小狗一个大狗是啥意思 我最喜欢吃鸡蛋炒西红柿作文300字 昨晚我梦见我们家门口拴两只大狗两只小狗我和佗们很亲密是什么意思? 想去厦门玩了,不知道有哪些靠近鼓浪屿的酒店,谁能介绍下 400字作文&quot;妈妈的拿手菜——番茄炒鸡蛋&quot; 厦门4星级以上酒店有哪些 怎么做番茄炒蛋小学生作文400多字 厦门中山路哪个酒店好一点求推荐 深入理解PHP 数组之count 函数 PHP有哪几种设计模式? php的介绍及Php有什么优势? php similar_text()函数的定义和用法 php中如何获得当前时间? wampserver 怎么配置php环境 如何选择一门适合自己的 php 框架 第一次做西红柿炒蛋作文100字 写做番茄炒鸡蛋的作文 做番茄炒鸡蛋的作文 番茄炒鸡蛋的作文 关于番茄炒鸡蛋初中作文 怎么做西红柿炒鸡蛋作文300字 学西红柿炒鸡蛋的作文要很简单的 学会煮西红柿炒蛋作文 350字 液晶电视一直在小屏幕里面放怎么弄大? 怎样把播放电视剧窗口变大? 如何把电视屏幕放大 TCL电视机怎么调屏幕大小? 液晶电视怎样调屏幕大小