php函数蛮多的,要完整的每个函数都理解深刻是个挺有挑战性的事情。

strip_tags,htmlspecialchars,htmlentities,stripslashes,addslashes这几个函数我想就需要专门的强化一下。

第一个函数:strip_tags,去掉 HTML 及 PHP 的标记

注意:本函数可去掉字串中包含的任何 HTML 及 PHP 的标记字串。若是字串的 HTML 及 PHP 标签原来就有错,例如少了大于的符号,则也会传回错误。而本函数和 fgetss() 有着相同的功能。fgetss是从文件中读取文件,并去掉html和php标记。

我们看一个例子:

PHP代码
  1. $str='
  2. 博客小子,BlogGuy,wayswang" />
  3. <link rel="alternate" title="BlogGuy" href="rss.php" type="application/rss+xml" />
  4. <link rel="stylesheet" href="templates/default/style.css" type="text/css" media="all" />
  5. <link rel="stylesheet" href="include/code.css" type="text/css" media="all" />
  6. <script type="text/javascript">
  7. var postminchars = parseInt("
  8. ';
  9. echo(strip_tags($str,100));

返回的结果是

可见虽然去除了html代码,但是空格格式之类的并没有去掉。

网上找到一个函数,但是我个人不是很满意,权作记录。

PHP代码
  1. unction cutstr_html($string, $sublen)
  2. {
  3. $string = strip_tags($string);
  4. $string = preg_replace ('/\n/is', '', $string);
  5. $string = preg_replace ('/ | /is', '', $string);
  6. $string = preg_replace ('/ /is', '', $string);
  7. preg_match_all("/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/", $string, $t_string);
  8. if(count($t_string[0]) - 0 > $sublen) $string = join('', array_slice($t_string[0], 0, $sublen))."…";
  9. else $string = join('', array_slice($t_string[0], 0, $sublen));
  10. return $string;
  11. }

第二个函数:htmlspecialchars, 将特殊字元转成 HTML 格式

详细说本函数会转化一下字符

& (和) 转成 &amp; 
" (双引号) 转成 &quot; 
< (小于) 转成 &lt; 
> (大于) 转成 &gt; 
 
例子:
PHP代码
  1. $str='
  2. BlogGuy" />&&<"
  3. ';
  4. echo(htmlspecialchars($str));
返回结果:

BlogGuy&quot; /&gt;&amp;&amp;&lt;&quot;
可见,本函数只转换以上4个字符,其他html标记是不转换的。所以康盛的uchome里面提供了另外一个函数可以选择
PHP代码
  1. //取消HTML代码
  2. function shtmlspecialchars($string) {
  3. if(is_array($string)) {
  4. foreach($string as $key => $val) {
  5. $string[$key] = shtmlspecialchars($val);
  6. }
  7. } else {
  8. $string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1',
  9. str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string));
  10. }
  11. return $string;
  12. }

第三个函数:htmlentities,将所有的字元都转成 HTML 字串

可能你还在遗憾htmlspecialchars只能处理4个html标记,现在你不要遗憾了,htmlentities是转化全部字符。不可无不强大,但是在我看来意义不大。

PHP代码
  1. $str='
  2. BlogGuy" />&&<##博客小子"
  3. ';
  4. echo(htmlentities($str));

返回结果

选择的理由是什么呢?

看源代码完全不知所云嘛!

第四个函数:stripslashes与addslashes本是一对,addslashes是使用反斜线引用字符串,stripslashes是还原addslashes引用的字符串。

该函数一般都是数据库查询之前就需要处理的必要步骤,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。

看看例子吧

PHP代码
  1. $str='
  2. BlogGuy" />&&<##博客小子\\\"
  3. ';
  4. echo(addslashes($str));

结果

php的strip_tags,htmlspecialchars,htmlentities,stripslashes,addslashes解释的更多相关文章

  1. strip_tags,htmlspecialchars,htmlentities,stripslashes,addslashes学习小结

    一.strip_tags 从字符串中去除 HTML 和 PHP 标记 string strip_tags ( string $str [, string $allowable_tags ] ) str ...

  2. htmlentities,html_entity_decode,addslashes

    PHP htmlspecialchars_decode() 函数 PHP htmlspecialchars() 函数 PHP html_entity_decode() 函数 PHP中混淆的三组函数总结 ...

  3. PHP的htmlspecialchars、strip_tags、addslashes解释

    第一个函数:strip_tags,去掉 HTML 及 PHP 的标记 注意:本函数可去掉字串中包含的任何 HTML 及 PHP 的标记字串.若是字串的 HTML 及 PHP 标签原来就有错,例如少了大 ...

  4. htmlentities、addslashes 、htmlspecialchars的使用

    1.html_entity_decode():把html实体转换为字符. Eg:$str = "just atest & 'learn to use '";echo htm ...

  5. strip_tags、htmlentities、htmlspecialchars的区别

    一.strip_tags() 函数剥去字符串中的 HTML.XML 以及 PHP 的标签. strip_tags(string,allow) 注释:可通过allow设置允许的标签.这些标签不会被删除. ...

  6. urlencode rawurlencode htmlspecialchars htmlentities

    w string urlencode ( string $str ) 返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+).此 ...

  7. php中htmlspecialchars()函数和addslashes()函数的使用和区别

    在防止被注入攻击时,常会用到两个函数:htmlspecialchars()和addslashes()函数.这两个函数都是对特殊字符进行转义. 1)addslashes()作用及使用 addslashe ...

  8. php stripslashes() addslashes() 解析

    stripslashes() 函数删除由 addslashes() 函数添加的反斜杠. 实例: <?php $str = "Is your name O\'reilly?"; ...

  9. PHP内置的字符串处理函数

    字符串的特点    1.其他类型的数据用在字符串类型处理函数中,会自动将其转化成字符串后,在处理 <?php echo substr("abcdefghijklmn",2,4 ...

随机推荐

  1. android在JNI_OnLoad入口函数下断点动态调试so库

    一般来说,很多APK的校验代码,都会在程序运行的时候自动加载一些动态so库,然后执行这些库中的校验代码.所以为了能够通过程序的校验,我们必须在执行这些函数之前下断点——理想的方法就是在JNI_OnLo ...

  2. webpack-dev-server 支持其他设备访问配置

    webpack-dev-server 打开的服务默认是只能localhost访问的,当有时候需要让别人访问的时候可以配置 --host 192.168.84 这样在同一个局域网下面就可以通过该ip来访 ...

  3. 阿里云将centos 7 自带的 php 5.4升级为 5.6

    1.php -v PHP 5.4.16 (cli) (built: Nov 6 2016 00:29:02) Copyright (c) 1997-2013 The PHP Group Zend En ...

  4. 【HDOJ5555】Immortality of Frog(状压DP)

    题意:给你一个NxN的网格,第N行的每一列都有个青蛙,这些青蛙只会往上走, 上帝会在每个膜中随机等概率放一个长生不老的药, 一共有N个膜,每个膜覆盖一些区间,如果这个区间恰好为N那么就是好膜,否则是坏 ...

  5. js动态添加select菜单 联动菜单

    原文发布时间为:2009-11-14 -- 来源于本人的百度文章 [由搬家工具导入] <html> <head> <title>http://hi.baidu.co ...

  6. 不用框架使用ajax 纯js使用ajax post,get范例及其区别

    原文发布时间为:2009-11-15 -- 来源于本人的百度文章 [由搬家工具导入] 不用框架使用ajax 纯js使用ajax post,get范例及其区别 ===================== ...

  7. JDBC连接池&DBUtils使用

    使用连接池改造JDBC的工具类: 1.1.1          需求: 传统JDBC的操作,对连接的对象销毁不是特别好.每次创建和销毁连接都是需要花费时间.可以使用连接池优化的程序. * 在程序开始的 ...

  8. Berkely DB Java Edition学习笔记

    Berkely DB对于高并发.要求速度快的应用来说是个不错的选择,mysql就是用BDB实现的(mysql的后台) ,mysql快,BDB比mysql还要快N倍.BDB是一种嵌入式的.非关系数据库, ...

  9. the project was not built since its build……

    [问题描述] 用eclipse编译程序时,出现下面错误: The project was not built since its build path is incomplete. Cannot fi ...

  10. github 获取repo 发布的版本号

    获取最新版本 https://api.github.com/repos/nickchou/paopao/releases/latest 获取版本列表 https://api.github.com/re ...