php的strip_tags,htmlspecialchars,htmlentities,stripslashes,addslashes解释

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));

结果

时间: 2024-12-09 14:18:26

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

htmlentities,html_entity_decode,addslashes

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

PHP的htmlspecialchars、strip_tags、addslashes解释

第一个函数:strip_tags,去掉 HTML 及 PHP 的标记 注意:本函数可去掉字串中包含的任何 HTML 及 PHP 的标记字串.若是字串的 HTML 及 PHP 标签原来就有错,例如少了大于的符号,则也会传回错误.而本函数和 fgetss() 有着相同的功能.fgetss是从文件中读取文件,并去掉html和php标记. 第二个函数:htmlspecialchars, 将特殊字元转成 HTML 格式 详细说本函数会转化一下字符 & (和) 转成 & " (双引号) 转成

urlencode rawurlencode htmlspecialchars htmlentities

w string urlencode ( string $str ) 返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+).此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样.由于历史原因,此编码在将空格编码为加号(+)方面与 ? RFC3896 编码(参见 rawurlencode())不同. string rawu

php中htmlspecialchars,htmlentities用法

[导读] 在php中htmlspecialchars, 将特殊字元转成 HTML 格式,而htmlentities,将所有的字元都转成 HTML 字串 了,下面我来分别简单的介绍. htmlentities用法 代码如下复制代码 在php中htmlspecialchars, 将特殊字元转成 HTML 格式,而htmlentities,将所有的字元都转成 HTML 字串 了,下面我来分别简单的介绍. htmlentities用法 $str = "John & 'Adams'";e

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

在防止被注入攻击时,常会用到两个函数:htmlspecialchars()和addslashes()函数.这两个函数都是对特殊字符进行转义. 1)addslashes()作用及使用 addslashes()通常用于防止sql注入,它可对通过get,post和cookie传递过来的参数的单引号和双引号已经null前加“\”进行转义 如:如变量$str=$_POST["str"];的值为:bb' or 1='1.通过addslashes()函数过滤后会变为:bb\' or 1=\'1: 2

PHP内置的字符串处理函数

字符串的特点    1.其他类型的数据用在字符串类型处理函数中,会自动将其转化成字符串后,在处理 <?php echo substr("abcdefghijklmn",2,4),"<br>"; //cdef //使用数字会自动转化为字符串 echo substr(123456,2,4); //3456 ?> 2.可以将字符串视为数组,当做字符集合来看待 <?php $str="abcdefg"; //下面这两种方法都

vim php tab 补全提示

在vimrc中加入下面这段,把方法名保存在一个文件中引入到字典中 set dictionary+=/home/lucifer/package/PHP_function.txt set complete-=k complete+=k function! InsertTabWrapper() let col=col('.')-1 if !col || getline('.')[col-1] !~ '\k' return "\<TAB>" else return "\&

php 数据过滤

1.php提交数据过滤的基本原则 1)提交变量进数据库时,我们必须使用addslashes()进行过滤,像我们的注入问题,一个addslashes()也就搞定了.其实在涉及到变量取值时,intval()函数对字符串的过滤也是个不错的选择.2)在php.ini中开启magic_quotes_gpc和magic_quotes_runtime.magic_quotes_gpc可以把get,post,cookie里的引号变为斜杠.magic_quotes_runtime对于进出数据库的数据可以起到格式话

PHP系列(五)PHP字符串处理

 php字符串处理 1.字符串的处理方式(分割匹配找查替换) //声明一个关联数组,数组名为$lamp, 成员有4个 $lamp = array( 'os'=>'Linux','webserver' =>'Apache', 'db'=>'MySQL', 'language'=>'php' ); //可以解析,双引号中对于数组索引,右方括号(])标志着索引的结束, //但是注意:不要在[]中使用引号,否则会在引号处结束 echo "A OS is $lamp[os].&qu