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 如果有小数部分则进一位. ...
随机推荐
- Func<T1, T2, TResult> Delegate 系统Func委托类型
原文发布时间为:2011-03-25 -- 来源于本人的百度文章 [由搬家工具导入] http://msdn.microsoft.com/en-us/library/bb534647%28v=VS.1 ...
- Iframe载入页面 及 跳转页面
原文发布时间为:2009-05-05 -- 来源于本人的百度文章 [由搬家工具导入] 第一个文件 frame1.html <!DOCTYPE html PUBLIC "-//W3C// ...
- [论文]Coordination of Cluster Ensembles via Exact Methods
作者:Ioannis T. Christou, Member, IEEE IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE, ...
- 移动电子商务:五个技术标准与Trustonic TEE解决方案【转】
转自:http://www.vonwei.com/post/mobileTrustonicTEE.html 转载申明:本站原创,欢迎转载.但转载时请保留原文地址.原文地址:http://www.von ...
- c#反射,委托,事件
1.反射,通过类名来实例化类 //用构造函数动态生成对象: Type t = typeof(NewClassw); Type[] pt = ]; pt[] = typeof(string); pt[] ...
- extern "C"解析
转自大牛的解析(非常具体详细)http://www.cnblogs.com/skynet/archive/2010/07/10/1774964.html 我做个简单的标注方便以后自己查看: 在用C++ ...
- Vue中this.$router.push参数获取
传递参数的方法:1.Params 由于动态路由也是传递params的,所以在 this.$router.push() 方法中path不能和params一起使用,否则params将无效.需要用name来 ...
- vue.js移动端app实战2
貌似有部分人要求写的更详细,这里多写一点vuel-cli基础的配置 什么是vue-cli? 官方的解释是:A simple CLI for scaffolding Vue.js projects,简单 ...
- Maven 多模块父子工程 (含Spring Boot示例)
一.为什么要用Maven多模块 假设有这样一个项目,很常见的Java Web应用.在这个应用中,我们分了几层: Dao Service Web 对应的,在一个项目中,我们会看到一些包名: org.xx ...
- 动态设置表格[GridView]在编辑时 只读。
找到GridView的CellEditorInitalize事件. protected void agv_main_CellEditorInitialize(object sender, ASPxGr ...