加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式去除HMTL标签实例详解

发布时间:2020-12-14 00:43:01 所属栏目:百科 来源:网络整理
导读:需求:在将一个字符串写入数据库的过程中,我们常常面对一个问题:字符串中含有html标签,比如:换行 br ,空格 nbsp ,等其他html标签(a,p,div)等,我们最好能够从前台传入的字符串中,将这些字符过滤掉,再存入数据库。 正则表达式 /( [ a-z ] +)( [ ^

需求:在将一个字符串写入数据库的过程中,我们常常面对一个问题:字符串中含有html标签,比如:换行<br>,空格&nbsp,等其他html标签(a,p,div)等,我们最好能够从前台传入的字符串中,将这些字符过滤掉,再存入数据库。

正则表达式

/<([a-z]+)([^<>]+)*(>(.*)</1>|/>)/

正则表达式详解

< //匹配标签开始 ([a-z]+) // 子模式① : 匹配 标签名,+ 代表 >=1,至少一个

([^<>/]+)*  //子模式②: 匹配 属性值;
*标识可以有多个属性 ; []原子集说明该属性中不能含有< 和 >

(>(.*)</1>|/>)  
// 子模式③: 匹配结束标签 如: >PHP</a>,/>,
// 此处注意,或 | 元字符表明 结束标签.
//有两种匹配方式,分别为成对标签<span><span>,或者直接关闭的标签<input type="text"/>

(.*)    // 子模式③ 中的子模式,子模式④ : 匹配标签内容,
//比如 PHP,<span><br><span> 中的<br>

替换Html标签实例

下面,我将写一个正则替换html标签的实例,详情解释已写在注释中

$str = "<a href='www.baidu.com'>PHP</a>C#,精神病人思路广&nbsp <span><br></span>&nbsp<br/> &nbsp<a href='#' target='_blank'/>&nbsp房天下<br>国际网组";   

    $reg = "/<([a-z]+)([^<>]+)*(>(.*)</1>|/>)/";
    //这是我优化之后的正则表达式,可以 匹配 成对的标签和非常对的标签
    比如:<html>hello</hello>,<a href="#",target="_blank"/>

    $str1 = "&nbsp<br>";//匹配空格 和换行
    $reg1 = "/(&nbsp)|(<br>)/";

    if (preg_match_all($reg,$str,$arr,2)){
        var_dump($arr);
    }
    $newstr = preg_replace([$reg,$reg1],["$4",""],$str);//正则替换函数
    echo $newstr;


    // preg_replace 正则替换函数
    /*  @pattern : 匹配模式,可以为单个匹配,也可以为数组  @replacement:替换后 的内容,可以为数组,若为数组 ,将与前面的匹配模式对应替换  @subject : 源内容,要替换的字符串 */



    //下面的函数没啥用,方便查看是如何进行替换的。
    //可以分别看一下一下,$reg1,$reg2,$reg3对 $str1,$str2,$str3 的处理

    if (preg_match_all($reg1,2)){
        echo "<pre>";
        var_dump($arr);//打印匹配详情
        echo "</pre>";
    }
    //preg_match_all 正则匹配函数
    /*  @parttern: 匹配模式  @replacement : 替换后的内容  @match: 匹配后的结果,数组。 */

运行结果(替换结果):

PHPC#,精神病人思路广  房天下国际网组

正则匹配详情

array(4) {
  [0]=>
  array(5) {
    [0]=>
    string(38) "<a href='www.baidu.com/search'>PHP</a>"//匹配结果
    [1]=>
    string(1) "a"//子模式①,匹配标签名
    [2]=>
    string(28) " href='www.baidu.com/search'"//子模式②,匹配标签属性
    [3]=>
    string(8) ">PHP</a>"//子模式③,匹配结束标签 
    [4]=>
    string(3) "PHP"  //子模式④,匹配标签内容(成对标签的前提下)
  }
  [1]=>
  array(5) {
    [0]=>
    string(17) "<span><br></span>"
    [1]=>
    string(4) "span"
    [2]=>
    string(0) ""
    [3]=>
    string(12) "><br></span>"
    [4]=>
    string(4) "<br>"
  }
  [2]=>
  array(4) {
    [0]=>
    string(5) "<br/>"
    [1]=>
    string(2) "br"
    [2]=>
    string(0) ""
    [3]=>
    string(2) "/>"
  }
  [3]=>
  array(4) {
    [0]=>
    string(29) "<a href='#' target='_blank'/>"
    [1]=>
    string(1) "a"
    [2]=>
    string(25) " href='#' target='_blank'"
    [3]=>
    string(2) "/>"
  }
}

(编辑:李大同)

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

    推荐文章
      热点阅读