• 技术文章 >后端开发 >PHP问题

    如何使用正则替换的方式实现清除字符串中所有的HTML标签?

    慕斯慕斯2021-06-10 14:33:26原创61
    上篇文章给大家介绍了《PHP中我们如何自定义匹配手机号的正则表达式?(附代码)》,本文继续给大家介绍如何使用正则替换的方式实现清除字符串中所有的HTML标签?(详细介绍)

    如何编写一个函数,使用正则替换的方式能够实现清除字符串中所有的HTML标签?

    如果我们想要去清楚字符串HTML的标签去要把HTML的标签全部列出来,首先我们先把字符串定义下来,总的来说我们HTML的标签主要有两种情况,一种是双标签以什么开始,以什么结束,另外一种就是单标签(<meta>或者是input)结束,一般情况下,我们不会把这个标签给删掉,比如说写一个(input)标签的文本域,如果我们把标签删掉了,文本域就没了,因此我们不会直接这样做,我们会把相对应的标签转化为实体,假如,我们直接输出(echo)$str;我们运行结果,空白栏外是front标签,里面是普通的文本域,(代码结果如下所示)

    <?php
    /**** ***清楚字符串HTML标签* *******/
    $str ='<font>高考加油</font><input type="text"/>';
    echo $str;
    ?>

    代码结果如下所示

    5.JPG

    以上这种情况,如果我们要是清除,是不行的,因此,我们会对上述代码进行替换,首先,我们先定义一个函数,function demo(),给到一个字符串,紧接着我们定义正则,$pattern,然后我们需要使用到两个符号,第一(/</S),第二个是(/>/S),当我们找到之后,我们进行替换,$replace,一个是(&lt)另一个是(&gt),最后我们直接(return)他们的结果。输出(echo)demo($str),最后我们得到的结果就是原样输出,

    代码如下:

    <?php
    /**** ***清楚字符串HTML标签* *******/
    $str ='<font>高考加油</font><input type="text"/>';
    echo $str;
    
    
    function demo($str){
        //定义正则
        $pattern = array(
        '/</S',
        '/>/S'
        );
        $replace = array('&lt;','&gt;' );
        return preg_replace($pattern, $replace, $str);
    }
        echo '<hr/>' ;
        echo demo($str);
    ?>

    代码结果如下所示;

    6.JPG

    其实一样,我不使用这个函数,系统中也有其他的函数帮我们实现;

    例如:

    现在我们用(htmlspecialchars)函数进行编码,然后进行代码演示:

    代码如下:

    <?php
    /**** ***清楚字符串HTML标签* *******/
    $str ='<font>高考加油</font><input type="text"/>';
    echo $str . '<hr/>';
    echo htmlspecialchars($str);
    function demo($str){
        //定义正则
        $pattern = array(
        '/</S',
        '/>/S'
        );
        $replace = array('&lt;','&gt;' );
        return preg_replace($pattern, $replace, $str);
    }
        echo '<hr/>' ;
        echo demo($str);
    ?>

    代码结果如下所示;

    7.JPG

    从上述代码演示结果看出,我们所得到的结果是一样的,这就是我们所实现的替换,然而对于我们今天讨论的清除,道理是一样的,我们还是定义一个正则表达式,

    我们以代码为例:

    <?php
    /**** ***清楚字符串HTML标签* *******/
    $str ='<font>高考加油</font><input type="text"/>';
    echo $str . '<hr/>';
    echo htmlspecialchars($str);
    function demo($str){
        //定义正则
        $pattern = array(
        '/</S',
        '/>/S'
        );
        $replace = array('&lt;','&gt;' );
        return preg_replace($pattern, $replace, $str);
    }
        echo '<hr/>' ;
        echo demo($str);
        echo '<hr/>';
        $str ='<font color="" >高考加油</font>';
        $pattern = '/<.*?>(.*?)<\/.*?>/S';
        echo preg_replace($pattern,'\1',$str);
    ?>

    代码结果如下所示;

    8.JPG

    通过上述代码我们可以清楚地看到,标签已经清除了,只剩下内容了;

    推荐学习:《PHP视频教程

    以上就是如何使用正则替换的方式实现清除字符串中所有的HTML标签?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:正则 html php
    上一篇:php如何实现禁止跨域访问 下一篇:php如何对数组进行转码
    第16期线上培训班

    相关文章推荐

    • php获取从html表单传递数组的方法,phphtml表单数组_PHP教程• html如何设置语言• 什么是正则表达式?他的用法?他的特点是什么?(附详解)• html标签失效怎么办

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网