我如何清理一个javascript文本?

时间:2013-07-22 作者:Daniel

我有一个textarea,它将接收一个js片段(Google Analytics)。有没有办法净化?既然我不能使用像wp\\u filter\\u nohtml\\u kse()这样的函数,我应该使用什么?

3 个回复
最合适的回答,由SO网友:fuxia 整理而成

不,没有这个功能。您需要一个完整的JavaScript解析器。这不是WordPress核心的一部分。

SO网友:Ben Miller - Remember Monica

一种简单的方法是让用户只输入他或她的Google Analytics属性ID,而不是让他们输入整个JavaScript代码。然后您自己生成代码段,使用其属性ID。

根据this Google help page, 以下是当前分析跟踪代码:

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push([\'_setAccount\', \'UA-XXXXX-Y\']);
  _gaq.push([\'_trackPageview\']);

  (function() {
    var ga = document.createElement(\'script\'); ga.type = \'text/javascript\'; ga.async = true;
    ga.src = (\'https:\' == document.location.protocol ? \'https://ssl\' : \'http://www\') + \'.google-analytics.com/ga.js\';
    var s = document.getElementsByTagName(\'script\')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>
“UA-XXXXX-Y”是属性ID。看起来前两个字符总是“UA”XXXXX\'表示一定数量的数字(不一定是五位数,因为我的站点的一个属性ID有八位数)。\'Y’是一个可能有多个数字的整数。

验证属性ID的一种方法是使用正则表达式,如下所示:

preg_match(\'/^UA-[0-9]+-[0-9]+$/\', $input);
如果$input是有效的属性ID格式,则返回1;如果不是,则返回false。

SO网友:Ben Miller - Remember Monica

如果您想让用户能够输入自己的Javascript代码,但不想让他们输入任何HTML,您可以使用以下方法:

preg_match( \'/\\A<script((?!<[a-zA-Z])[\\s\\S])*</script>\\Z/\', trim($input) );
trim函数从开头和结尾删除空格,并且regex模式仅在以“<;开头时匹配字符串;“脚本”,以“<;结尾/脚本(>;\',没有任何“<;”紧跟字母的字符。这将有效地防止任何游离的HTML,同时允许用户在出于某种原因需要时使用小于运算符来放置一些Javascript代码。

我要做的另一件事是确保只有管理员才能设置此选项,如果他或她在其中偷偷插入一些HTML并破坏自己的网站,那是他们自己的错。当然,如果这要进入数据库,请确保已针对SQL对其进行了清理。

结束

相关推荐

如何将小部件类别上的3个主要类别中的链接更改为javascript函数调用

我想知道。。如何更改我的3个主要类别链接,以便它们调用javascript函数?我正在使用WooThemes的快照主题。以下是网站的当前状态:http://www.mpn.p.ht/wp_br2/我想更改javascript函数调用的链接的类别有:Masculino, Feminino 和Infantil.他们在一个有类的容器中widget.编辑:我已经更改了jquery。我尝试在中使用jqueryindex.php:$(document).ready(function() {