JavaScript替换特殊字符为空字符串

5

好的,我有这些字符串原型可以使用,但是我不太明白它们确切的作用。

String.prototype.php_htmlspecialchars = function()
{
 return this.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
}

String.prototype.php_unhtmlspecialchars = function()
{
 return this.replace(/&quot;/g, '"').replace(/&gt;/g, '>').replace(/&lt;/g, '<').replace(/&amp;/g, '&');
}

String.prototype.php_addslashes = function()
{
 return this.replace(/\\/g, '\\\\').replace(/'/g, '\\\'');
}

String.prototype._replaceEntities = function(sInput, sDummy, sNum)
{
 return String.fromCharCode(parseInt(sNum));
}

String.prototype.removeEntities = function()
{
 return this.replace(/&(amp;)?#(\d+);/g, this._replaceEntities);
}

String.prototype.easyReplace = function (oReplacements)
{
 var sResult = this;
 for (var sSearch in oReplacements)
  sResult = sResult.replace(new RegExp('%' + sSearch + '%', 'g'), oReplacements[sSearch]);

 return sResult;
}

基本上,我需要做的是替换所有双引号("),>,<,单引号(')等。基本上和php中的htmlentities()函数所做的一样,但我需要将它们替换为空字符串,这样它们就会从文本中被删除。
我可以使用上面提到的任何函数吗?如果不行,那么我该如何在Javascript中实现呢?我可以对字符串进行替换吗?
请有人帮帮我。我正在将此文本放入选择框中,并将在提交表单时输入到数据库中。虽然我正在使用PHP删除所有这些字符,但我很难找到一种在JavaScript中执行此操作的方法。
谢谢 :)

目标是什么?听起来你想要去除标签,也就是从HTML中提取文本内容,对吗? - deceze
不,我允许用户在文本框中输入文字,并将其存入数据库,而文本框的输入非常重要。它会检查选择框中是否已经有了此文本。因此,需要去除特殊字符,因为我不想将已经存在于数据库中的相同值再次插入其中。 - SoLoGHoST
但是请确保您也进行 PHP 剥离,因为如果您不在服务器上测试,很容易绕过 JavaScript 直接将 HTML 注入到您的数据库中。 - mplungjan
就像我说的,PHP 部分我已经解决了这个问题。我在 PHP 中很好地去除了它。完全删除所有这些。只是 JS 部分没有被去除。无论如何,有人回答了这个问题。干杯 :) - SoLoGHoST
1个回答

15

谢谢,使用您的方法,我实际上可以定义自己的字符。这比剥离实体更好。谢谢 :) 只需要添加 -_ 即可。 - SoLoGHoST

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接