مهرب سلاسل JS
يتحول نص فيه علامات اقتباس وسطر جديد، مثل Hello "world" على سطرين، إلى Hello \"world\"\nline 2 جاهزًا للصق بين علامتي اقتباس مزدوجتين. اختر الاقتباس المزدوج أو المفرد أو العلامة المائلة الخلفية، أو ألغِ التهريب لتستعيد النص. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- Hello "world" line 2
- وضع الحساب
- Escape
- علامة الاقتباس
- Double
- النتيجة
- Hello \"world\"\nline 2
- الطول
- 23
- حرفي
- "Hello \"world\"\nline 2"
إدراج نص حر داخل حرفي سلسلة JavaScript خطأ يومي شائع: علامة اقتباس مزدوجة واحدة تنهي السلسلة، والشرطة المائلة العكسية تبتلع الحرف التالي، والسطر الجديد الخام خطأ نحوي، ولصق غير ASCII قد يكسر أدوات قديمة تتوقع \uXXXX. يحوّل مهرب سلاسل JavaScript هذا النص العادي إلى جسم حرفي آمن (وحرفي مُقتبس جاهز للصق)، ويعكس الخريطة نفسها عندما تحتاجون الحروف الأصلية. يتعامل وضع escape مع أسلوب الاقتباس الذي تختارونه — مزدوج أو مفرد أو backtick — إضافة إلى الشرطات المائلة وتهريبات التحكم المعتادة وتهريبات unicode الاختيارية لكل نقطة ترميز غير ASCII.
كيف تعمل تهريبات سلاسل JavaScript عمليًا
حرفي سلسلة JavaScript هو تسلسل أحرف محاط باقتباس مزدوج أو مفرد أو backticks. داخل ذلك التسلسل تبدأ الشرطة المائلة العكسية تهريبًا: \\ تصبح شرطة واحدة، و\" أو \' تطابق الاقتباس المختار، و\n سطر جديد، و\r إرجاع عربة، و\t جدولة، والأشكال القصيرة مثل \0 و\b و\f و\v تغطي عناصر تحكم أخرى. شكلان ست عشريان قياسيان في المحركات الحديثة: \xHH يرمز وحدة ترميز برقمين ست عشريين، و\uXXXX يرمز وحدة UTF-16 بأربعة أرقام.
يسمح ES6 أيضًا بأقواس على نمط \u{1F600} لأي نقطة Unicode حتى U+10FFFF، وهي الطريقة النظيفة لتمثيل أحرف خارج المستوى متعدد اللغات الأساسي دون أزواج بديلة يدوية. تطبق هذه القدرة تلك القواعد بحتمية. في وضع escape تمر على كل وحدة ترميز، وتستبدل الأحرف الخاصة بأقصر تهريب آمن لأسلوب الاقتباس المحدد، وتهرب دائمًا U+2028 وU+2029 حتى لا يكسر لصق متعدد الأسطر أسطر المصدر، وتعيد اختياريًا كتابة كل حرف غير ASCII إلى \uXXXX أو \u{…} عندما يكون unicode هو true.
في وضع unescape تحلل التسلسلات نفسها وترفض الشرطات النهائية وأشكال \x أو \u غير المكتملة و\u{} الفارغة ونقاط الترميز خارج النطاق والتهريبات الثمانية القديمة التي لا توجد إلا في أوضاع Annex B المتساهلة.
أين يقدّم مهرب سلاسل JS قيمة حقيقية
مولّدات الشفرة التي تُخرج مقتطفات إعداد وخرائط توطين وملفات اختبار يجب أن تهرّب كل حقل نص حر قبل كتابته داخل اقتباس، وإلا فإن فاصلة عليا واحدة في اسم منتج تفسد الملف المُولَّد. مواقع التوثيق والوصفات ذات الأمثلة القابلة للنسخ تحتاج مسار تهريب موثوقًا لتبقى عينات المستخدم JavaScript صالحًا. فرق الدعم والأمن تلصق مقاطع سجلات تحتوي بالفعل تهريبات بشرطة مائلة وتحتاج unescape يفشل بصوت عالٍ على تسلسلات \u المقطوعة بدل اختراع أحرف.
يتحقق مهندسو التوطين من أن اللغات متعددة البايتات تذهب وتعود عندما يُفرض وضع unicode لمستودعات ASCII فقط. مؤلفو المناهج الذين يدرّسون صيغة سلاسل ECMAScript يريدون صفحة مخصصة لتهريبات الحرفيات لا دفن الموضوع تحت أداة Base64 أو كيانات HTML عامة، لأن نية البحث ومجموعة التهريب المسموحة تختلفان. إن احتجتم كيانات HTML أو ترميز نسبة URL أو تحليل JavaScript كاملًا، فعاملوها كنوايا بحث وصفحات هبوط منفصلة لا بإثقال صفحة مهرب السلاسل هذه.
حالات الاستخدام
حرفيات سلسلة آمنة في الشفرة المُولَّدة
هرّبوا عناوين الرسائل وقيم الإعداد ذات النص الحر قبل كتابتها في JavaScript باقتباس مزدوج أو مفرد أو حرفي قالب.
إعادة كتابة unicode ل ASCII فقط
هرّبوا مع unicode true لتصبح الأحرف غير ASCII تسلسلات \uXXXX أو \u{…} مناسبة لمستودعات ASCII فقط وسلاسل أدوات قديمة.
الأسئلة الشائعة
ما الفرق بين result وliteral؟
result هو الجسم المُهرَّب دون اقتباسات محيطة. أما literal (وضع escape فقط) فيلف ذلك الجسم بأسلوب الاقتباس المختار حتى تلصقوا سلسلة JavaScript كاملة في المصدر.
هل يمكن التهريب وإلغاؤه معًا؟
نعم. اضبطوا mode على escape (الافتراضي) لترميز النص العادي، أو mode على unescape لاستعادة النص من جسم حرفي سلسلة JavaScript.
ما أنماط الاقتباس المدعومة؟
مزدوج (الافتراضي) ومفرد وbacktick. يهرّب وضع escape الفاصل الذي اخترتموه فقط؛ ويهرّب وضع backtick أيضًا ${ ليبقى الجسم آمنًا داخل حرفي قالب.
كيف أحوّل الحروف المشكّلة إلى تهريب \u؟
فعّل خيار Unicode عند التهريب، فيُعاد كتابة كل حرف خارج ASCII، فتصبح café هي caf\u00E9، وتأخذ الأحرف التي تتجاوز النطاق الأساسي الصيغة \u{…}.
ماذا يحدث لتهريب تالف عند إلغاء التهريب؟
يُرفض برسالة واضحة بدل التخمين. فالشرطة المائلة العكسية المنفردة في النهاية، وصيغ \x أو \u الناقصة، و\u{} الفارغة، ونقاط الترميز خارج النطاق، والتهريب الثماني القديم، كلها تُرفض.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/enc/js-string-escape \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello \"world\"\nline 2"}'const res = await fetch("https://api.kit.forhosting.com/enc/js-string-escape", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello \"world\"\nline 2"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/js-string-escape",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello \"world\"\nline 2"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/js-string-escape", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello \\"world\\"\\nline 2"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello \"world\"\nline 2"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/js-string-escape", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "Hello \"world\"\nline 2"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.js_string_escape",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
يفهم وضع unescape التسلسلات \n و\r و\t و\\ و\xHH و\uXXXX و\u{…}، ويفشل فورًا ب invalid_input عند التسلسلات المقطوعة أو غير القانونية بدل اختراع نفايات نصف مفكوكة.
كيف تعمل تهريبات سلاسل JavaScript عمليًا
المسار عمل سلاسل نقي بلا شبكة ولا بذور عشوائية ولا ساعة حائط، لذا تنتج المدخلات المتطابقة دائمًا JSON ذاته. تسعير طلبات API الناجحة هو القاعدة المنشورة $0.002 لكل عنصر، ولا تستهلك إخفاقات التحقق الرصيد المدفوع مسبقًا.
ما ترسلونه وما تستلمونه
يحوّل وضع escape النص العادي إلى جسم حرفي JavaScript في result ويعيد أيضًا literal: الجسم نفسه ملفوفًا بالاقتباس المختار للصقه في المصدر. يعكس وضع unescape تسلسلات التهريب في text ويعيد السلسلة العادية المستعادة في result دون حقل literal. القيمة الافتراضية ل quote هي double؛ اضبطوا single أو backtick عندما تستخدم صيغة الوجهة تلك الفواصل — يفرض escape تهريب ذلك الفاصل فقط (ومع backticks تسلسل ${ الذي يفتح إدراجًا). لا تستهلك إخفاقات التحقق الرصيد المدفوع مسبقًا. فحوصات كلاسيكية: تهريب تحية تتضمن اقتباسات مدمجة وسطرًا جديدًا، وإلغاء تهريب جسم يستخدم \u00E9 ل é، والتهريب مع unicode true بحيث تصبح café هي caf\u00E9، ورفض سلسلة تنتهي بشرطة مائلة عارية. أرسلوا حقل سلسلة إلزاميًا باسم text وحقولًا اختيارية mode وquote وunicode. عند إغفال mode يكون escape هو الافتراضي فيبقى الحمولة الواحدة مفيدة. تعيد الاستجابة mode وquote وunicode وtext الأصلي وresult وlength ل result. غياب text والكائنات غير السلاسل وقيم mode أو quote غير المدعومة والقيم غير القابلة للقراءة كمنطقي ل unicode والسلاسل الأطول من الحد الموثق والشرطات النهائية والتهريبات الست عشرية غير المكتملة والأرقام غير الست عشرية وتهريبات الأقواس الفارغة ونقاط الترميز غير القانونية والأشكال الثمانية المرفوضة تفشل جميعها ب invalid_input ورسالة إنجليزية واضحة. تسعير API عند النجاح هو القاعدة المنشورة $0.002 لكل عنصر.
أين يقدّم مهرب سلاسل JS قيمة حقيقية
ولأن هذه القدرة محرك parse نقي، فتسعير API هو القاعدة المنشورة $0.002 لكل عنصر ناجح والتحقق الفاشل لا يستهلك الرصيد.
حالات التكامل
فك أجسام مُهرَّبة من السجلات وال fixtures
ألغوا تهريب أجسام سلاسل JavaScript من السجلات والتذاكر وملفات golden إلى نص مقروء، مع إخفاقات صارمة على التهريبات غير المكتملة أو غير القانونية.
أسئلة تقنية
ماذا يحدث إذا كان تسلسل التهريب مشوّهًا؟
يفشل unescape ب invalid_input مع ذكر الموضع والتسلسل السيئ (مثل شرطة نهائية أو \uXXXX غير مكتمل). لا يُحصَّل شيء على إخفاقات التحقق.
كم التكلفة؟
أداة المتصفح مجانية وتعمل محليًا. تستخدم طلبات API رصيد KIT المدفوع مسبقًا بمقدار $0.002 لكل عنصر ناجح؛ ولا تُحصَّل المدخلات غير الصالحة.