zoukankan      html  css  js  c++  java
  • 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标签提交





  • 相关阅读:
    android ble 蓝牙4.0开发日志(三)
    android ble 蓝牙4.0开发日志(一)
    android ble 蓝牙4.0开发日志(二)
    Android的界面设计工具——DroidDraw
    discuz x2.5论坛 欢迎新会员不更新解决方法
    Andorid BLE开发
    Android蓝牙聊天,蓝牙通讯
    office tab 9.2和office2013完美结合
    android蓝牙主动发起配对实例
    数据库备份与还原
  • 原文地址:https://www.cnblogs.com/wesky/p/7443910.html
Copyright © 2011-2022 走看看