• php过滤字段htmlentities,htmlspecialchars,strip_tags


    1.strip_tags:过滤html标签比如<a> <html> <script>

    如:

     $str = '<a href="test.html">文字内容</a><script>alert(213)</script>';
     echo strip_tags($str);

    输出结果:
    文字内容alert(213)
    去掉了<script></script> 标签 
    应用场景:去掉表单提交内容的html标签


    2.htmlentities,htmlspecialchars 过滤字段的各种特殊符号
    区别一:
    htmlentities对欧元符号'€'转义,美元符号'$' 不转义
    htmlspecialchars对欧元符号'€'不转义,美元符号'$' 不转义

    区别二:
    $str = '<a href="demo.php?m=index&a=index&name=中文">测试页面</a>';
    
    echo 'htmlentities指定GB2312编码:'.htmlentities($str,ENT_COMPAT,"GB2312").'';
    
    echo 'htmlentities未指定编码:'.htmlentities($str).'';
    
    $str = '<a href="demo.php?m=index&a=index&name=中文">测试页面</a>';
    
    echo htmlspecialchars($str).'';

    输出:

    htmlentities指定GB2312编码:<a href="demo.php?m=index&a=index&name=中文">测试页面</a>
    
    htmlentities未指定编码:<a href="demo.php?m=index&a=index&name=ÖÐÎÄ">²âÊÔÒ³Ãæ</a>
    
    <a href="demo.php?m=index&a=index&name=中文">测试页面</a>

    测试

    $str='<a href="test.html">测试</a>';
            $transstr = htmlspecialchars($str) ;
            echo $transstr . "<br />";
            echo htmlspecialchars_decode($transstr);

    总结:htmlentities会转化所有的html代码,连同里面的它无法识别的中文字符也给转化了(当有中文的时候会变成乱码)。htmlspecialchars 只会转化部分代码(如:& ' " < 和 > )

    结论:有中文的时候用htmlspecialchars,使用htmlentities 必须要 htmlentities($str, ENT_COMPAT, 'gb2312'); strip_tags防止<a href> <script>alert(1)</script> html标签提交





  • 相关阅读:
    nginx 主配置文件解析
    redis 主从同步
    redis 持久化 RDB与AOF
    python开发之virtualenv与virtualenvwrapper(linux下安装与配置)
    linux 编译安装python3
    linux基础系统优化及常用命令
    linux基础
    以太坊源码之POA区块生成机制
    以太坊Go、Java、Python、Ruby、JS客户端介绍
    区块链扫盲:区块链技术初探(一)
  • 原文地址:https://www.cnblogs.com/wesky/p/7443910.html
Copyright © 2020-2023  润新知