Ответ 1
http://locutus.io/php/strings/addslashes/
function addslashes( str ) {
return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}
Есть ли у JavaScript встроенная функция, например PHP addslashes
(или addcslashes
), для добавления обратных косых черт к символам, которым требуется экранирование в строке?
Например, это:
Это демонстрационная строка с "одиночные кавычки" и "двойные кавычки".
... станет:
Это демонстрационная строка с "одиночные кавычки" и \ "Двойные кавычки \".
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);
Вариант функции, предоставляемой Паоло Бергантино, который работает непосредственно на 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 для использования в веб-приложениях. Это не идеальное решение для проверки, но оно ловит низко висящие фрукты.