النص

String Escape

إضافة رموز الهروب إلى النص لتحويله إلى حرفية نصية (علامات اقتباس، شرطة مائلة عكسية، أحرف تحكم) جاهزة للصق في الكود، أو إزالة رموز الهروب والرجوع إلى النص الأصلي.

نمط علامات الاقتباس

                    

To put text containing quotes, line breaks, or backslashes inside a string literal in code, those characters need escaping — otherwise they'll end the string early or get misinterpreted. This tool escapes and unescapes text for a specific syntax.

How to use it

Common uses

Things to keep in mind

The same character (a double quote, for example) is escaped differently depending on context — a JS string, JSON, and a shell each have their own syntax and their own set of special characters.

Double-escaping (escaping already-escaped text) is a common mistake when passing data through multiple layers, like JSON nested inside a shell command.

مقالة عن هذه الأداة: الهروب بالأحرف: لماذا يختلف حسب السياق (JS وJSON والشِل والريجكس)

الأسئلة الشائعة

ما الذي تقوم الأداة بتهريبه بالضبط؟

تضيف الأداة رموز هروب لعلامات الاقتباس وللشرطة المائلة العكسية نفسها وأحرف التحكم مثل السطر الجديد والتبويب، بحيث يصبح النص جاهزًا للصق داخل حرفية نصية في الكود دون كسر الصياغة.

ما خيارات نمط علامات الاقتباس وهروب اليونيكود؟

يمكن اختيار علامات اقتباس مزدوجة أو مفردة أو خلفية بحيث تُهرَّب علامة الاقتباس المطابقة للنمط المختار فقط، كما يمكن تفعيل خيار تهريب الأحرف غير ASCII بصيغة \uXXXX عند الحاجة إلى نص يقتصر على أحرف ASCII.

ما الفرق بين وضعي الهروب وإلغاء الهروب، وهل النص يُرسل إلى خادم؟

وضع الهروب يحوّل نصًا خامًا إلى نص محمي برموز هروب، ووضع إلغاء الهروب يعكس العملية ليعيد النص الأصلي؛ وكلا الوضعين يعملان بالكامل داخل متصفحك عبر JavaScript دون إرسال أي بيانات إلى خادم.

ماذا أفعل إذا مرّ النص عبر عدة سياقات متتالية؟

يجب الهروب بالترتيب الصحيح: أولًا للسياق الداخلي (مثل JSON)، ثم للسياق الخارجي (مثل أمر شِل يُدرَج فيه ذلك JSON). ترتيب مقلوب أو تخطي أحد المستويين سبب شائع لتعطّل سلسلة "مُهرَّبة بشكل صحيح" عمليًا رغم ذلك.

لماذا تُهرَّب نفس علامة الاقتباس بطرق مختلفة في سياقات مختلفة؟

كل سياق (سلسلة JavaScript، JSON، شِل، تعبير نمطي) له صياغته الخاصة بمجموعة رموزه الخاصة وطريقته الخاصة في الهروب منها — لذا يعتمد الهروب الصحيح على المكان الذي يُدرَج فيه النص، لا على النص نفسه.

مقالات: النص

camelCase وsnake_case وkebab-case: متى نستخدم كل صيغة

لماذا يوجد camelCase وsnake_case وkebab-case، وأين يُستخدم كل منها عادة.

Text Diff: كيف تعمل خوارزمية إيجاد الفروقات بين النصوص

كيف تجد خوارزمية الديف أصغر مجموعة تغييرات بين نسختين من نص.

التعبيرات النمطية: الأساسيات وفخّ المطابقة الجشعة

الفرق بين المطابقة الجشعة والكسولة في التعبيرات النمطية ولماذا يهم ذلك عمليًا.

فرز الأسطر: لماذا يختلف الفرز الأبجدي عن العددي

لماذا يعامل الفرز الأبجدي الأرقام كنص، وكيف يختلف ذلك عن الفرز العددي.

CRLF وLF: لماذا لا تزال نهايات الأسطر تسبّب مشاكل

من أين جاء الفرق بين CRLF وLF، ولماذا لا يزال يسبب مشاكل مع git والسكربتات.

عدّ الأحرف والكلمات: لماذا يعتمد على يونيكود

لماذا يمكن أن يتكون رمز تعبيري واحد ظاهريًا من عدة نقاط ترميز في يونيكود.

Lorem Ipsum: من أين جاء نص الحشو ولماذا لا معنى له

من أين جاء نص Lorem Ipsum فعليًا، ولماذا يُستخدم نص بلا معنى بدلاً من نص حقيقي.

Slugify: كيف يتحول العنوان إلى رابط صالح

كيف يتحول عنوان مقالة إلى رابط نظيف وقابل للقراءة بشرطات.

Markdown: لماذا أصبح معيار التوثيق

لماذا يظل Markdown مقروءًا حتى في صورته الخام، بخلاف HTML.

المسافات غير المرئية: لماذا تفشل مقارنة نصين متطابقين ظاهريًا

كيف يمكن لمسافة غير مرئية أن تجعل مقارنة نصين متطابقين ظاهريًا تفشل.

عكس النص: لماذا يفشل مع الرموز التعبيرية

لماذا يكسر عكس النص الساذج الرموز التعبيرية المركّبة من عدة نقاط ترميز.

تحليل تكرار النص: من سحابة الكلمات إلى كسر الشيفرات

كيف ساعد تحليل تكرار الحروف تاريخيًا في كسر شيفرات الاستبدال البسيطة.