在处理网页字符串的时候,尤其是做爬虫类的应用时,经常会涉及到要处理的字符串中包含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,

&lt;div&gt;&lt;p&gt;11111&lt;/p&gt;&lt;/div&gt;

如果要反转义$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 = '&lt;div&gt;&lt;p&gt;11111&lt;/p&gt;&lt;/div&gt;'

返还给客户端的字符串,

$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使用总结的更多相关文章

  1. htmlentities,html_entity_decode,addslashes

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

  2. html_entity_decode() 函数

    html_entity_decode() 函数   定义和用法 The html_entity_decode() function converts HTML entities to characte ...

  3. html_entity_decode() 将 HTML 实体转成字符原型

    PHP html_entity_decode() 适用于PHP 4.3.0+,将HTML 实体转成字符. html_entity_decode(包含HTML 实体的字符串, 可选如何解码引号, 可选字 ...

  4. html_entity_decode与htmlentities函数

    htmlentities() 函数把字符转换为 HTML 实体.html_entity_decode() 函数把 HTML 实体转换为字符.例子:$a = '<div> <p> ...

  5. php解码“&#”编码的中文用函数html_entity_decode()

    遇到类似 ' 这种编码的字,我们可以用html_entity_decode()函数来解码. html_entity_decode() 函数把 HTML 实体转换为字符. 语法 html_entity_ ...

  6. PHP html_entity_decode() 函数

    html_entity_decode(string,flags,character-set) 把 HTML 实体转换为字符. html_entity_decode() 函数是 htmlentities ...

  7. html_entity_decode()、空格、&nbsp; 乱码问题

    普通 ASCII 码空格为 32,但是浏览器会对普通空格进行自动归并,也就是如果你输入10个 0x20 的空格在HTML页面里面,可能会被合并成一个空格. 如果想要一致的呈现多个空格,就要用到 编码标 ...

  8. php 基础代码大全(不断完善中)

    下面是基础的PHP的代码,不断完善中~ //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */ 常量名 类常量建议全大写,单词间用下划线 ...

  9. PHP常用函数总结

    数学函数 abs() 求绝对值 传一个数字 会返回该值的绝对值 例如:abs(-1);//输出1 ceil() 进一法取整数 返回不小于 value 的下一个整数,value 如果有小数部分则进一位. ...

随机推荐

  1. [LeetCode] Scramble String 字符串 dp

    Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrin ...

  2. 【MFC】Tab Control 控件的使用(转)

    原文转自 http://blog.csdn.net/hustspy1990/article/details/5425365 1.先建立一个对话框MFC应用程序,然后在工具箱里面把Tab Control ...

  3. DCP port

    DCP port: D+ D- short. This doesn't support any data transfer. Without the need ofr enumeration. Can ...

  4. windows下pip安装python module失败

    C:\Python27\pywin32-214>setup.py -q install Building pywin32 2.7.214.0 Traceback (most recent cal ...

  5. IE/FF/Chrome下document.documentElement和document.body的 scrollHeight/scrollTop/clientHeight 以及判断滚动条是否已拉到页面最底部

    DTD已声明 IE document.documentElement.scrollHeight 浏览器所有内容高度 ,document.body.scrollHeight 浏览器所有内容高度 docu ...

  6. scala之split()函数用法

    split()函数: def split(arg0: String): Array[String] def split(arg0: String, arg1: Int): Array[String] ...

  7. (5)ASP.NET HTML服务器控件

    工具箱 与服务端交互 <body> <form id="form1" runat="server"> <div> <% ...

  8. IntelliJ中的Scala入门

    IntelliJ IDE中的Scala入门 创建项目 打开IntelliJ并单击File => New => Project 在左侧面板中,选择Scala.在右侧面板中,选择IDEA. 将 ...

  9. CSDN博客已经打不开了

    CSDN博客已经打不开了,移动和联通的网都一样,怀疑是辽宁节点到骨干网出现故障 tracert结果 4跳和5跳本来是国际出口,相当于出国绕了一圈再回来访问 Hop IP地址 所在地 耗时(ms) 1 ...

  10. TensorFlow——共享变量的使用方法

    1.共享变量用途 在构建模型时,需要使用tf.Variable来创建一个变量(也可以理解成节点).当两个模型一起训练时,一个模型需要使用其他模型创建的变量,比如,对抗网络中的生成器和判别器.如果使用t ...