سؤال

مجرد سلسلة. أضف 'في كل مرة يكون هناك اقتباس واحد.

هل كانت مفيدة؟

المحلول

replace يعمل في الاقتباس الأول ، لذلك تحتاج إلى تعبير منتظم صغير:

str = str.replace(/'/g, "\\'");

نصائح أخرى

بعد وظيفة JavaScript ، "، b ، t ، n ، f أو r المكافئة لوظيفة php addSlashes ().

function addslashes(string) {
    return string.replace(/\\/g, '\\\\').
        replace(/\u0008/g, '\\b').
        replace(/\t/g, '\\t').
        replace(/\n/g, '\\n').
        replace(/\f/g, '\\f').
        replace(/\r/g, '\\r').
        replace(/'/g, '\\\'').
        replace(/"/g, '\\"');
}

يمكن الهروب من السلسلة بشكل شامل وضغوط باستخدام json.stringify. إنه جزء من JavaScript ecmascript 5 وبدعم من إصدارات المتصفح الأحدث الرئيسية.

str = JSON.stringify(String(str));
str = str.substring(1, str.length-1);

باستخدام هذا النهج ، أيضًا chars الخاصة مثل البايت الفارغ ، وأحرف Unicode وراحة الخط \r و \n يتم هروبها بشكل صحيح في بيان مضغوط نسبيا.

من المؤكد أنك لا تحتاج إلى استبدال عروض الأسعار الفردية فحسب ، بل تحتاج أيضًا إلى هرب بالفعل:

"first ' and \' second".replace(/'|\\'/g, "\\'")

قد تكون الإجابة التي لم تطلبها ذلك مفيدة ، إذا كنت تقوم بالاستبدال استعدادًا لإرسال السلسلة إلى ALERT () - أو أي شيء آخر حيث قد تقوم حرف اقتباس واحد برحلة لك.

str.replace("'",'\x27')

التي سوف تحل محل جميع الاقتباسات الفردية مع رمز السداسي لاقتباس واحد.

var myNewString = myOldString.replace(/'/g, "\\'");
var str = "This is a single quote: ' and so is this: '";
console.log(str);

var replaced = str.replace(/'/g, "\\'");
console.log(replaced);

يعطيك:

This is a single quote: ' and so is this: '
This is a single quote: \' and so is this: \'
if (!String.prototype.hasOwnProperty('addSlashes')) {
    String.prototype.addSlashes = function() {
        return this.replace(/&/g, '&') /* This MUST be the 1st replacement. */
             .replace(/'/g, ''') /* The 4 other predefined entities, required. */
             .replace(/"/g, '"')
             .replace(/\\/g, '\\\\')
             .replace(/</g, '&lt;')
             .replace(/>/g, '&gt;').replace(/\u0000/g, '\\0');
        }
}

الاستخدام: في حالة تأهب (str.addslashes ()) ؛

المرجع: https://stackoverflow.com/a/9756789/3584667

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top