首页 > web前端 > js教程 > 正文

Prototype源码浅析 String部分(三)之HTML字符串处理_prototype

php中文网
发布: 2016-05-16 17:57:15
原创
1185人浏览过
HTML处理 stripTags  | escapeHTML |  unescapeHTML
   
JSON处理 unfilterJSON |  isJSON |  evalJSON |  parseJSON
脚本处理 stripScripts |  extractScripts  | evalScripts
现在,String部分转入具体的关联应用,分别对应
HTML字符串,JSON字符串和HTML中的脚本字符串。
【乱入一句,有关JSON的一点东西,可以看看http://www.cnblogs.com/TomXu/archive/2012/01/11/2311956.html】
下面分别叙述:
一、HTML字符串
stripTags :移除字符串中所有的 HTML 标签。
escapeHTML : 将 HTML 特殊字符转换为它们的等价实体。(&对应& 对应> )
unescapeHTML :移除字符串中的标签,并将用实体表示的 HTML 特殊字符转换为它们的正常形式。(escapeHTML 的逆操作)
stripTags 中的一段正则/])+)?>|/gi用来匹配标签中的内容,注意不能换行,不过换行的话就有语法错误了。
【这个方法唯一需要注意的位置是,stripTags会移除<script>标签,但是不会移除里面的内容,所以可能将<script>里面的内容暴露出来,影响页面结构】 <BR>二、脚本字符串 <BR>stripScripts : 移除字符串中所有的 HTML script 块。弥补stripTags方法对script标签的缺陷 <BR>extractScripts :提取出字符串中包含的所有 script 的内容,并将之返回作为一个字符串数组。 <BR>evalScripts :执行字符串中包含的所有 script 块的内容。返回一个数组,该数组包含每个 script 执行后返回的值。 <BR>stripScripts中的正则是对stripTags中一个正则的发展 <BR><div class="codetitle"><span><a style="CURSOR: pointer" data="10424" class="copybut" id="copybut10424" onclick="doCopy('code10424')"><U>复制代码 代码如下:<div class="codebody" id="code10424"> <BR>function stripScripts() { <BR>var pattern = new RegExp('<script[^>]*>([\S\s]*?)</script>', 'img');//i忽略大小写,m换行,g全局 <BR>return this.replace(pattern , ''); <BR>} <BR> <BR><div class="codetitle"><span><a style="CURSOR: pointer" data="2138" class="copybut" id="copybut2138" onclick="doCopy('code2138')"><U>复制代码 代码如下:<div class="codebody" id="code2138"> <BR>function extractScripts() { <BR>var matchAll = new RegExp('<script[^>]*>([\S\s]*?)</script>', 'img'), <BR>matchOne = new RegExp('<script[^>]*>([\S\s]*?)</script>', 'im'); <BR>return (this.match(matchAll) || []).map(function(scriptTag) { <BR>return (scriptTag.match(matchOne) || ['', ''])[1]; <BR>}); <BR>} <BR> <BR>map是对数组的一个扩展,某些浏览器有这个原生方法,参见《chrome原生方法之数组》 <BR>最后获得的是一个所有script标签内部内容的一个数组,因此evalScripts 的做法就很自然的可以想出来——循环遍历获得的数组,然后依次执行(eval),存储每一项执行的结果。 <BR><div class="codetitle"><span><a style="CURSOR: pointer" data="80112" class="copybut" id="copybut80112" onclick="doCopy('code80112')"><U>复制代码 代码如下:<div class="codebody" id="code80112"> <BR>function evalScripts() { <BR>return this.extractScripts().map(function(script) { return eval(script) }); <BR>} <BR> <BR>三、JSON处理 <BR>unfilterJSON:移除 Ajax JSON 或 JavaScript 响应内容周围的安全注释界定符。 <BR>isJSON:使用正则表达式检测字符串是否是合法的 JSON 格式 <BR>evalJSON:执行一个 JSON 格式的字符串,并返回结果对象 <BR>其中isJSON和evalJSON就是JSON.js中的parseJSON,而且代码也差不多,参见《从字符串中解析出JSON》 <BR>顺便说一点unfilterJSON中的安全注释界定符,这是一种安全机制,对于自家的数据,可以在返回值两端加上特殊的字符(界定符)来表明数据的来源,客户端解析的时候用unfilterJSON来处理掉添加的界定符,借此可以在一定程度上减少一些XSS的攻击。 <BR>Prototype中默认的形式是: <BR>'/*-secure- {"name": "小西山子","age": 24} */' <BR>其中界定符号是 /*-secure- '和' */' </script>
HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号