البرمجة

إزالة معلمات URL باستخدام JavaScript

المشكلة في الكود الحالي هي أن التعبير العادي (Regular Expression) الذي تستخدمه في الدالة removeParam لا يقوم بإزالة المعلمة بشكل صحيح. لفهم الخطأ، دعني أشرح الكود بشكل أدق.

في الدالة removeParam، تقوم بتعريف تعبيرين عاديين لإزالة المعلمتين start_date و end_date من الرابط. ولكن النمط الذي تستخدمه في الكلمات المتعلقة بـ start_date و end_date غير صحيح.

على سبيل المثال، في التعبير الأول /([&\?]start_date=*$|start_date=*&|[?&]start_date=(?=#))/، هناك بعض المشاكل. العبارة ([&\?]start_date=*$|start_date=*&) تحاول العثور على start_date وتأكد من وجودها بعد الرمز ? أو &، ولكنها قد لا تعمل بالشكل المرجو بسبب الرمز & الذي يُستخدم لتمثيل رمز & في HTML entities. علاوة على ذلك، الجزء الذي يلي start_date يحتوي على * الذي لا يستخدم بشكل صحيح هنا.

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

javascript
function removeParam(uri, paramToRemove) { var pattern = new RegExp('([&?])' + paramToRemove + '=[^&]*(&|$)', 'g'); return uri.replace(pattern, '$1').replace(/&$/, '').replace(/[?&]$/, ''); } // استخدام الدالة لإزالة المعلمات var url = 'test.html?dir=asc&end_date=2016-09-23&order=created_at&start_date=2016-08-14'; url = removeParam(url, 'start_date'); url = removeParam(url, 'end_date'); console.log(url);

تعمل الدالة removeParam الآن عن طريق استخدام تعبير عادي جديد يتم تكوينه بشكل ديناميكي ليتماشى مع المعلمة التي تريد إزالتها. يتم استبدال هذه المعلمة وأي قيمة مرتبطة بها بفارغ، ومن ثم يتم إزالة أي علامات & زائدة أو علامات ? في نهاية الرابط بعد الإزالة.

المزيد من المعلومات

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

عندما ننظر إلى الكود المصحح، نرى أن الدالة removeParam تستقبل اثنين من الباراميترات: uri الذي يمثل عنوان URL الذي نريد تعديله و paramToRemove الذي يمثل اسم المعلمة التي نريد إزالتها.

داخل الدالة، يتم بناء نمط التعبير العادي (Regex pattern) بشكل ديناميكي باستخدام قيمة المعلمة التي نريد إزالتها. ثم يتم استخدام هذا النمط للبحث عن المعلمة في عنوان الـ URL وإزالتها بالشكل الصحيح.

من الجدير بالذكر أن الدالة تأخذ في الاعتبار الحالات المختلفة التي قد تظهر في عناوين URL، مثل وجود المعلمة في بداية العنوان أو في وسطه أو حتى في نهايته. كما أنها تتعامل مع الرموز المشتركة مثل & لفصل بين المعلمات.

باستخدام هذه الدالة، يمكن للمطورين الآن بسهولة تنظيف عناوين الـ URL من المعلمات غير المرغوب فيها بدون الحاجة إلى كود معقد أو تعديلات كبيرة. يمكنهم ببساطة استدعاء الدالة مرتين لإزالة المعلمتين start_date و end_date كما هو موضح في المثال الأخير بالكود.

هذا الأسلوب يساعد على جعل الكود أكثر فعالية وسهولة في الصيانة، كما يساهم في تحسين تجربة المستخدم وجودة البرمجيات عمومًا.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر