php html_entity_decode使用总结
在处理网页字符串的时候,尤其是做爬虫类的应用时,经常会涉及到要处理的字符串中包含html标签,现在对这类字符串的处理做一个小的总结:
有时候获取到的字符串中有html标签,在入库的时候出于安全的考虑通常会对这样的字符串做转义处理,例如:
$a = '<div><p>11111</p></div>';
$b = htmlentities($a);
file_put_contents('./a.txt',$b);
echo $b;
在网页上显示是这样的:<div><p>11111</p></div>
但是如果echo $a;那么网页上只会显示:11111
由此可见,如果不转义,那么字符串里面的html标签就会被解析(如果是恶意代码,就会被执行),转义后会被当做字符串输出。
在来看看被转义后的$b,
<div><p>11111</p></div>
如果要反转义$b,那么使用php函数html_entity_decode,例如:
$a = '<div><p>11111</p></div>';
$b = htmlentities($a);
$b = html_entity_decode($b);
file_put_contents('./a.txt',$b);
echo $b;
这时网页上显示11111,$b的值此时就是$a,
最近做了一个需求,像这种带html标签的字符串入库的时候需要转义保留,在页面上显示的时候在反转义。然而客户端需要这些数据的时候需要过滤掉这些html标签,所以给客户端的字符串需要过滤掉html标签,
$b = '<div><p>11111</p></div>'
返还给客户端的字符串,
$b = html_entity_decode($b);
过滤所有的html标签:
$pattern = array(
"@<script(.*?)</script>@is", //过滤掉js代码
"@<iframe(.*?)</iframe>@is",//过滤掉iframe
"@<style(.*?)</style>@is",//过滤掉css
"@<(.*?)>@is" //过滤html标签
);
foreach($pattern as $k => $v){
$b = preg_replace($v,"",$b);
}
echo $b; //输出11111,html标签都被过滤掉了
有时候需要过滤掉某一个标签之外的其他html标签,那改怎么办呢?
"@<[^img](.*?)>@is" //过滤除了img标签之外的其他html标签
php html_entity_decode使用总结的更多相关文章
- htmlentities,html_entity_decode,addslashes
PHP htmlspecialchars_decode() 函数 PHP htmlspecialchars() 函数 PHP html_entity_decode() 函数 PHP中混淆的三组函数总结 ...
- html_entity_decode() 函数
html_entity_decode() 函数 定义和用法 The html_entity_decode() function converts HTML entities to characte ...
- html_entity_decode() 将 HTML 实体转成字符原型
PHP html_entity_decode() 适用于PHP 4.3.0+,将HTML 实体转成字符. html_entity_decode(包含HTML 实体的字符串, 可选如何解码引号, 可选字 ...
- html_entity_decode与htmlentities函数
htmlentities() 函数把字符转换为 HTML 实体.html_entity_decode() 函数把 HTML 实体转换为字符.例子:$a = '<div> <p> ...
- php解码“&#”编码的中文用函数html_entity_decode()
遇到类似 ' 这种编码的字,我们可以用html_entity_decode()函数来解码. html_entity_decode() 函数把 HTML 实体转换为字符. 语法 html_entity_ ...
- PHP html_entity_decode() 函数
html_entity_decode(string,flags,character-set) 把 HTML 实体转换为字符. html_entity_decode() 函数是 htmlentities ...
- html_entity_decode()、空格、 乱码问题
普通 ASCII 码空格为 32,但是浏览器会对普通空格进行自动归并,也就是如果你输入10个 0x20 的空格在HTML页面里面,可能会被合并成一个空格. 如果想要一致的呈现多个空格,就要用到 编码标 ...
- php 基础代码大全(不断完善中)
下面是基础的PHP的代码,不断完善中~ //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */ 常量名 类常量建议全大写,单词间用下划线 ...
- PHP常用函数总结
数学函数 abs() 求绝对值 传一个数字 会返回该值的绝对值 例如:abs(-1);//输出1 ceil() 进一法取整数 返回不小于 value 的下一个整数,value 如果有小数部分则进一位. ...
随机推荐
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---41
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- C#执行CMD命令并接收返回结果的实现方法
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using ...
- HDU4757 Tree(可持久化Trie)
写过可持久化线段树,但是从来没写过可持久化的Trie,今天补一补. 题目就是典型的给你一个数x,和一个数集,问x和里面的某个数xor起来的最大值是多少. 最原始的是数集是固定的,只需要对数集按照高到低 ...
- sublime 中设置pylint
http://www.360doc.com/content/14/1110/11/15077656_424004081.shtml 安装 pylinter 插件 详见 sublime 插件安装 配 ...
- nodejs Centos环境搭建
使用二进制文件安装: node 环境下载 https://nodejs.org/en/download/ 下载里面的windows 安装包 和 linux 安装包 1)windows安装 window ...
- C++ 找不到方法标识符
其实原因是这个CPP并没有面向对象的结构. 所以进行编译时是“顺序编译”的,而main函数的定义又在A的定义之前.自然找不到标识符了.
- 树的直径新求法、codeforces 690C3 Brain Network (hard)
树的直径新求法 讲解题目 今天考了一道题目,下面的思路二是我在考场上原创,好像没人想到这种做法,最原始的题目,考场上的题目是这样的: 你现在有1 个节点,他的标号为1,每次加入一个节点,第i 次加入的 ...
- Android 进度条对话框ProgressDialog
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- python局部变量与全局变量
name = "head first python"def what_happens_here(): print(name) 1 name = "pytho ...
- 用户空间和内核空间通讯之【Netlink 上】
原文地址:用户空间和内核空间通讯之[Netlink 上] 作者:wjlkoorey258 引言 Alan Cox在内核1.3版本的开发阶段最先引入了Netlink,刚开始时Netlink是以字符驱动接 ...