加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP 过滤html注释的简单示例

发布时间:2020-05-26 00:34:36 所属栏目:PHP 来源:互联网
导读:PHP 过滤html注释的简单示例

感兴趣的小伙伴,下面一起跟随脚本之家 jb51.cc的小编来看看吧。
过滤html注释:

所谓过滤,不过是字符串的匹配与替换,这里我们用到的正则匹配替换函数preg_replace(reg,replace,string);,PHPer都清楚,这个函数的关键在于reg的精确度,那么我们就来试试看吧:

首先要知道html注释的格式,是这样的:<!--注释内容-->。

开始正则的书写


<?php 
/**
 * 过滤html注释
 *
 * @param 
 * @arrange (512.笔记) jb51.cc
 **/
$html = "<!--something-->something";
$html = preg_replace("/<!--.*-->/","",$html);
echo $html;
上面的代码将输出 something,似乎成功了呢,不急,多测试几个例子

<?php 
/**
 * 过滤html注释
 *
 * @param 
 * @arrange (512.笔记) jb51.cc
 **/
$html = "<!--something-->something<!--something-->";
$html = preg_replace("/<!--.*-->/",$html);
echo $html;
这个例子告诉我们,这样写并不能达到我们期望的效果,于是正则优化成了这样

<?php 
/**
 * 过滤html注释
 *
 * @param 
 * @arrange (512.笔记) jb51.cc
 **/
preg_replace("/<!--.*?-->/",$html);
嗯,这下满意了,但是html中会存在这样的代码<!--[if lt IE 9]>something<![endif]-->,这是浏览器兼容代码,显然是不能被过滤的,所以我们的正则继续优化,变成这样

<?php 
/**
 * 过滤html注释
 *
 * @param 
 * @arrange (512.笔记) jb51.cc
 **/
preg_replace("/<!--[^![]*?-->/",$html);
又接着如果html中有<script><!--something//--></script>的代码,我们又需要改一下我们的匹配规则了,改成了这样

<?php 
/**
 * 过滤html注释
 *
 * @param 
 * @arrange (512.笔记) jb51.cc
 **/
preg_replace("/<!--[^![]*?(?<!//)-->/",$html);
这样的话我基本上就去掉了我需要去掉的html的注释了!

意外收获:在优化过程中,没有多多行注释进行考虑,但规则意外的正常匹配了多行注释,不知道是否因为是从文件读取的html!

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读