Экранирование строк в JavaScript
имеет ли JavaScript встроенную функцию, такую как PHP addslashes
(или addcslashes
функция), чтобы добавить символы в символы, которые нужно вырваться в строку?
например, так:
Это демо-строка с "одинарные кавычки"и" двойные кавычки".
...станет:
Это демо-строка с 'одиночные кавычки' и "двойные кавычки."
4 ответов
http://locutus.io/php/strings/addslashes/
function addslashes( str ) {
return (str + '').replace(/[\"']/g, '\$&').replace(/\u0000/g, '\0');
}
вы также можете попробовать это для двойных кавычек:
JSON.stringify(sDemoString).slice(1, -1);
JSON.stringify('my string with "quotes"').slice(1, -1);
изменение функции, предоставляемой Паоло Bergantino это работает непосредственно на String:
String.prototype.addSlashes = function()
{
//no need to do (str+'') anymore because 'this' can only be a string
return this.replace(/[\"']/g, '\$&').replace(/\u0000/g, '\0');
}
добавив код выше в свою библиотеку, вы сможете сделать:
var test = "hello single ' double \" and slash \ yippie";
alert(test.addSlashes());
EDIT:
следующие предложения в комментариях, кто обеспокоен конфликтами между библиотеками JavaScript можно добавить следующий код:
if(!String.prototype.addSlashes)
{
String.prototype.addSlashes = function()...
}
else
alert("Warning: String.addSlashes has already been declared elsewhere.");
использовать encodeURI()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI
экранирует почти все проблемные символы в строках для правильной кодировки JSON и транзита для использования в веб-приложениях. Это не идеальное решение для проверки, но оно ловит низко висящие фрукты.