String üzerinde doğrudan çalışır Paolo Bergantino tarafından sağlanan fonksiyonun bir varyasyonu: Kütüphanenizdeki yukarıdaki kod ekleyerek
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');
}
Eğer mümkün olacak yapmak için:
var test = "hello single ' double \" and slash \\ yippie";
alert(test.addSlashes());
DÜZENLEME: Açıklamalarda
İzleme önerileri, JavaScript kütüphaneleri arasında çatışmalar aşağıdaki kodu ekleyebilirsiniz endişe her kimse:
if(!String.prototype.addSlashes)
{
String.prototype.addSlashes = function()...
}
else
alert("Warning: String.addSlashes has already been declared elsewhere.");
Hangi amaçla "kaçmak gerekiyor"? Dizelerden kaçmak için birçok farklı sebep vardır ve bunu yapmanın doğru yolu, hedefe bağlı olarak farklı olabilir. (ör., SQL'in eklenmesi durumunda PHP'nin addslashes() genellikle yanlış bir çözümdür: daha iyi bir çözüm parametreli sorgulardır) – Miles
Aslında bir Apple Dashboard Widget geliştiriyorum ve Terminal komutlarında kullanmadan önce dizelerimin düzgün bir şekilde kaçmasını istiyorum "widget.system" ile. –
@SteveHarrison Bu muhtemelen güvensiz. Bunun dışında, keyfi kod çalıştırmayı mümkün kılacak yollar olacaktır. Kabuklar girdikleriyle garip şeyler yaparlar. Güvenilmeyen veriyi geçirmeyi planlıyorsanız, sistem için backflips yapmaktan kurtulmanın tek yolu, başka bir işlevi kullanmaktır, bunun yerine çıkışsız parametreleri geçirmenizi sağlar. –