"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تطبيع النص الهوى إلى النص العادي في Laravel

تطبيع النص الهوى إلى النص العادي في Laravel

تم النشر بتاريخ 2024-11-08
تصفح:882

Normalizing Fancy Text to Normal Text in Laravel

تم نشر المقال من https://medium.com/@hafiqiqmal93/normalizing-fancy-text-to-normal-text-in-laravel-7d9ed56d5a78

إدخال النص من المستخدمين ليس مثيرًا للاهتمام على الإطلاق. مع ظهور Unicode في الهواتف الذكية، أصبح لدى المستخدمين الآن الرفاهية (وأحيانًا النزوة) لإدخال النص بمجموعة متنوعة من الأساليب والتنسيقات. من الرموز التعبيرية إلى علامات التشكيل، ومن الحروف المركبة إلى الأحرف ذات العرض الكامل، يمكن أن يكون نطاق "النص الرائع" مربكًا للغاية أو يصعب فهمه بواسطة النظام. على الرغم من كونها جذابة بصريًا، إلا أن هذه الاختلافات النصية تشكل تحديًا كبيرًا للنظام خاصة من حيث اتساق البيانات وإمكانية البحث وتجربة المستخدم.

إليك مثال النص الرائع:-


???????? ???? ? ??? ?????????? ????? ?? ??? ????? ??? ?? ?????????? ?? ??????? ???? ?????? ??? ??? ???? ????? ??? ? ?? ???? ?? ????? ??? ??????? ?? ???? ???? ?? ??? ?? ????? ??? ???????? ?????? ????? ?????, ?? ???? ??????? ???? ????..????? ?? ??? ????. ??? ?????? ???? ?? ???? ????? ?????????


يبدو وكأنه حرف مائل ولكنه ليس مائلًا. إنه في الواقع ينتمي إلى الرموز الأبجدية الرقمية الرياضية.

مشكلة في PHP؟

حسنًا، المشكلة الواضحة جدًا هي أن PHP لا تستطيع تشفير JSON لأحرف UTF-8 المشوهة عند الاستلام. في الطريقة الحديثة لتطوير الويب، حيث تستخدم واجهات برمجة التطبيقات وأطر الواجهة الأمامية JSON لنقل البيانات، تعد هذه مشكلة. إذا تم التعامل معها بشكل خاطئ، فإن هذه الأحرف المشوهة ستؤدي إلى تلف البيانات أو تعطلها أو غضب المستخدمين.

هدفنا بسيط :- توصلنا إلى الحل الذي سيحول كل نص رائع إلى نص عادي قابل للقراءة.

PHP تطبيع

تعتبر نماذج التطبيع محورية لفهم عملية التطبيع. أنها تلبي الاحتياجات اللغوية والتقنية المختلفة. على سبيل المثال، يقوم نموذج NFC بدمج الأحرف في أشكالها المركبة، في حين يقوم NFC بالعكس، حيث يقوم بتحليل الأحرف المركبة إلى الأجزاء المكونة لها. تذهب نماذج NFKC وNFKD إلى أبعد من ذلك، مع الأخذ في الاعتبار أحرف التوافق  -  طي الأشكال المختلفة للأحرف في شكل قانوني. تضمن هذه النماذج أن تكون مقارنة النصوص والبحث والتخزين متسقة وموثوقة.

الحل؟

يعد مقتطف الكود المقدم مثالًا رائعًا لنهج PHP لحل المشكلات المعقدة بالبساطة والكفاءة. دعونا نحلل هذا الحل ونفهم مكوناته ونرى كيف يتكامل بسلاسة:-


public static function normalizeText($text): ?string
{
    if (!$text) {
        return null;
    }
    $intl = [
        \Normalizer::FORM_C,
        \Normalizer::FORM_D,
        \Normalizer::NFD,
        \Normalizer::FORM_KC,
        \Normalizer::NFKC,
        \Normalizer::FORM_KC_CF,
        \Normalizer::FORM_KD,
        \Normalizer::NFKD,
        \Normalizer::NFC,
        \Normalizer::NFKC_CF,
    ];
    foreach ($intl as $form) {
        if (!\Normalizer::isNormalized($text, $form)) {
            return \Normalizer::normalize($text, $form);
        }
    }
    return $text;
}


الاستخدام بسيط:-


$normalText = Utils::normalizeText($YOUR_FANCY_STRING)


يمكنك التسجيل داخل وظيفة المساعد لتسهيل استخدامها. على سبيل المثال:-


if ( ! function_exists('normalize_text')) {
    function normalize_text(string $text): string
    {
         return Utils::normalizeText($text)
    }
}

// USAGE
$normalText = normalize_text($YOUR_FANCY_STRING)


في جوهرها، تعمل هذه الوظيفة على تعزيز فئة **Normalizer** الخاصة بـ PHP - وهي جزء من ملحق التدويل (intl) - لمعالجة التسوية. تقدم فئة **Normalizer** العديد من نماذج التسوية، كل منها مصمم خصيصًا لتلبية احتياجات التسوية المختلفة. تتكرر هذه الوظيفة من خلال هذه النماذج، للتحقق مما إذا كان النص قد تم تطبيعه بالفعل في نموذج معين باستخدام وظيفة **isNormalized**. إذا لم يكن الأمر كذلك، فإنه يقوم بتطبيع النص إلى هذا النموذج وإرجاع السلسلة التي تمت تسويتها.


خاتمة

على الرغم من أن النص الرائع قد يضيف جاذبية مرئية لإدخال المستخدم، إلا أنه يشكل تحديات كبيرة لمعالجة البيانات وقابلية التشغيل البيني للنظام. ومع ذلك، مع اعتماد فئة Normalizer الخاصة بـ PHP وتنفيذ نماذج التطبيع، يمكن للمطورين التغلب على هذه التحديات والتأكد من أن تطبيقاتهم تحافظ على اتساق البيانات وموثوقيتها في مواجهة مدخلات النص المتنوعة.


هل لديك أي تجارب أو تحديات تتعلق بالتعامل مع النصوص الفاخرة في مشاريعك؟ كيف تتعامل حاليًا مع مثل هذه المشكلات، وهل تجد فئة Normalizer الخاصة بـ PHP مفيدة في سير عملك؟ دعونا نواصل المحادثة ونشارك أفكارنا لمساعدة بعضنا البعض في التغلب على تعقيدات تطوير الويب الحديث. ??

بيان الافراج تم نشر هذه المقالة على: https://dev.to/afiqiqmal/normalizing-fancy-text-to-normal-text-in-laravel-5805?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] للحذف هو - هي
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3