相当于PHP's条纹睫毛
Equivalent of PHP's stripcslashes
我正在开发一个JavaScript程序,该程序解析来自API的数据。部分数据以'''t'等格式返回,我需要将其解析为tab(在本例中)而不是'''t'。
在PHP中,有一个很棒的函数叫做stripcslahes(),它可以帮我做到这一点,但我找不到等效的JavaScript。
有人知道JavaScript中有这样一个函数吗?还是将"''t"解析为选项卡的方法?
Javascript的字符串文字使用相同的反斜杠转义。应该有办法利用这一点。。。
var escapedString = '''t' // actually contains "'t"
, renderedString = (new Function('return "' + text + '"'))()
;
console.log(renderedString); // " " <= this is the tab character
请注意,这会使您的代码对注入攻击敞开大门,并且非常不安全,尤其是当escapedString
来自外部源时!
它(几乎)和使用eval一样糟糕!
更新:安全的方式
更好的方法可能是使用正则表达式:
var escapedString = '''t' // actually contains the characters ' and t
, renderedString = escapedString.replace(/''(.)/g, function (match, char) {
return {'t': ''t', 'r': ''r', 'n': ''n', '0': ''0'}[char] || match;
}
;
console.log(renderedString); // " " <= this is the tab character
在这里,您将使用replace方法来跟踪给定字符串中的所有反斜杠(后面跟着任何字符),并在每次找到匹配项时调用匿名函数。函数的返回值将决定匹配项将被替换。
匿名函数包含一个JS对象(在本例中用作关联数组),该对象包含所有已识别的转义符。反斜杠后面的字符(这里称为char
)将在该关联数组中查找,JS将返回相应的值。
行的最后一部分|| char
确保如果char
不是关联数组的一部分,则使用未更改的匹配(包括反斜杠),使原始字符串保持不变。
当然,这确实意味着你必须提前指定所有可能的逃生方式。
第二次更新:前进的道路
我突然想到,第一种方法是不安全的(可能有欺诈性输入),第二种方法不确定(你真的不知道你需要提供什么逃避);也许这两种方法可以结合起来!
var escapedString = '''t' // actually contains the characters ' and t
, renderedString = escapedString.replace(/''./g, function (match) {
return (new Function('return "' + match + '"'))() || match;
}
;
console.log(renderedString); // " " <= this is the tab character
当然,这个解决方案的性能不会很好。解析和构建这个新函数是一件代价高昂的事情,并且需要对转义字符串中存在的每个匹配的反斜杠进行解析和构建。如果性能成为一个问题,您可以添加某种缓存机制,该机制在创建每个函数后都会记住它。
然后,你也可以查找你需要使用的API,尝试找到它的文档或联系它的制造商,并获得它可以生成的转义的最终列表-0
如果您使用的是jQuery,则html()和text()函数应该可以执行您想要的操作。
var parsed = $("<div/>").html(''thello').text();
http://api.jquery.com/html/
http://api.jquery.com/text/
- Javascript:相当于PHP'使用RAW二进制输出的s hash_hmac.()
- PHP 相当于 Coldfusion 的 cfpdfform
- JavaScript-相当于PHP类self::
- 相当于node.js的var_dump(PHP)
- PHP 相当于 JavaScript 中的 Date.UTC 函数
- 什么是 JavaScript 相当于 php 的FILTER_SANITIZE_STRING
- JS相当于PHP的“strtotime('-11 month')”
- jQuery相当于PHP的strtr
- node.js相当于标准的PHP ajax保存方案
- NodeJS相当于PHP代码,涉及_GET美元和file_get_contents
- PHP 相当于 JavaScript “this” 关键字,特别是在对象中
- 是否有一个 Node.js 相当于 PHP 的包含,以便包含的代码可以访问父文件的变量
- Javascript相当于PHP的“print”
- PHP 相当于 JavaScript 绑定
- Javascript相当于php的循环效率
- Expressjs/node.js相当于php中的exit()
- 相当于php's在javascript中返回引用
- 相当于Javascript的PHP“;对于(y中的x)“;
- Javascript regex相当于php失败
- 这相当于PHP + javascript世界中的.net + flex