النتائج 1 إلى 4 من 4

الموضوع: regular expression بالعربي، اريد اقتراحات (sBForum,sakr4host,daif)

  1. regular expression بالعربي، اريد اقتراحات (sBForum,sakr4host,daif)



    السلام..
    اريد ان استخدم اما الامر grep او preg_match لتحري المدخلات العربية والانجليزية..
    فتخيل لدي <input> و يستطيع المرسل ان يرسل فقط حروف عربية او انجليزية .. لدي خبرة في الregular expression ولكن حلي ليس مناسب بالطريقة المطلوبة

    فاستخدمت المفتاح
    كود PHP:
    <?
    $arabic 
    'اأآؤءئبتثجحخدذرزسشـصضطظعغفقكلمنهوية'
    $patern '/^[a-z0-9'.$arabic.' ]{6,}$/i';
    preg_match($patern,$_POST['name']); //مثال لمدخل من الinput
    ?>
    وهذا يعطي نتيجة غريبة بعض الشيء .. هو يعمل بالشكل المطلوب ولكن اريد اقتراحات اكثر كفائة من هذا الحل .. لان الASP لهم المفتاح باستخدام الامر uXXXX\ وال "XXXX" ترمز لارقام من نوع الHEX و للPHP حل شبية وهو xYY\ و ال"YY" ترمز لرقمين فقط في الHEX وكما نعلم اللغه العربية موجودة في الجدول التي هي اكبر من رقمين ..

    والمشكلة الثانية .. لغة الPEARL تدعم المفتاح u\ ولكن الpreg الموجودة في الPHP التي هي مبنية على لغة الPEARL لا تدعمة داخل الPHP .. وهذا ينطبق على الاصدار 4 و 5.

    =======
    هامش:
    المشكلة .. ان هذا السؤال لم اجد حلة في المنتديات الاجنبية ولا احد قد سئل عنة في اي من المتديات العربية، وان شاء لله يوجد هنا اشخاص قد يكونوا محترفين لإقتراحي بحلول انسب. والى الان هذا هو سؤالي الثاني فقط في سوالف رغم المئات من الردود التي وضعتها .. سؤالي الاول .. لم اجد حل لها الى الان .. وهو ايضاً سؤال معقد برمجياً.





    __________________
    هلابي افضل المواقع العربية تصميماً
    انصح باستخدام ابونتو


  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    405


    وعليكم السلام

    كود PHP:
    <? 
    $arabic 
    'ا-ي';
    $patern '/^[a-z0-9'.$arabic.' ]{6,}$/i';
    preg_match($patern,$_POST['name']);
    ?>
    أعتقد أن preg ستدعم اللغة العربية في هذه الحالة ...

    لكن أشعر وكأنك تتحدث عن تخزين البيانات في قاعدة البيانات عن طريق الجافاسكربت مثلاً بصيغة Unicode .. فلو قمت بعمل escape للبيانات قبل تخزينها بواسطة الجافاسكربت فإنها ستتحول إلى :
    كود:
    %uXXXX
    والـ XXXX أيضاً هي 4 خانات بصيغة hex .. لو أردنا قراءة هذه الصيغة بالعربية سنقوم بتحويل الصيغة نفسها إلى :
    كود:
    &#XXXX;
    حيث X تساوي قيمة Decimal المضاهية للـ Hex في الصيغة العلوية .. وهذا هو الـ Unicode ..

    برمجياً:
    كود PHP:
    function urldecode_unicode($text) {
            return 
    preg_replace('#%u([0-9A-F]{1,4})#ie'"'&#' . hexdec('\\1') . ';'"$text);

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

    ملاحظة: عندما احتجت إلى التعامل مع Unicode ( بسبب استخدام تقنية AJAX ) قمت ببناء دالتين للمساعدة ، وهما :
    كود PHP:
        function strlen_unicode($text)
     {
            return 
    strlen(preg_replace("/&#([0-9]{4});/si""*"$text));
        }

        function 
    cut_unicode($text$num) {
            
    $origtext $text;
            
    $unilen strlen_unicode($text);
            if (
    $unilen $num) {
                
    $delnum $unilen $num;
                
    $x 0;
                while (
    $x $delnum) {
                    if (
    preg_match("/&#([0-9]{4});$/si"$text)) {
                        
    $text substr($text0strlen($text)-7);
                    } else {
                        
    $text substr($text0strlen($text)-1);
                    }
                    
    $x++;
                }
            }

            if (
    $text != $origtext) {
                
    $text .= "..";
            }

            return 
    $text;
        } 
    ربما قد تجد فيهما شيئاً يساعدك على تحقيق ما تريد ....

    اعذرني للإطالة وسوف أضع الموضوع تحت المتابعة بإذن الله تعالى .. منتظراً بقية الإخوة الكرام ..

    تحياتي، sBForum ( سابقاً )








  3. السلام ... شكراً على ردك .. وجدت طرقة حلوة وهو باستخدام الmodifyer التي تضع في الاخير الى وهو u... اي قبل عملية البحث يحاول ان يستعمل الPCRE_UTF8 وهو بالتالي يصحح بعض من المتاعب

    فإذا استخدمت
    كود PHP:
    <?
    $arabic 
    'اأآؤءئبتثجحخدذرزسشـصضطظعغفقكلمنهوية'
    $patern '/^[a-z0-9'.$arabic.' ]{6,}$/i';
    preg_match($patern,$_POST['name']);
    ?>
    ستجد انة يقبل 6 او اكثر حروف انجليزية و يقبل 3 حروف عربية وما فوق.

    و المطلوب هو ان يستقبل 6 حروف او اكثر سواء كانت عربية ام انجليزية .. حلي الاول كان في

    كود PHP:
    <?
    $arabic 
    'اأآؤءئبتثجحخدذرزسشـصضطظعغفقكلمنهوية'
    $patern '/^[0-9'.$arabic.' ]{6,}|[0-9a-z]{6,}$/i';
    preg_match($patern,$_POST['name']);
    ?>
    هذا حل ولكن اذا استعملت العربية والاتينية في نفس الجملة سيعطيك نتيجة غريبه بعض الشيء .. فالحل الذي توصلت الية وهو


    كود PHP:
    <?
    $arabic 
    'اأآؤءئبتثجحخدذرزسشـصضطظعغفقكلمنهوية'
    $patern '/^[0-9a-z'.$arabic.' ]{6,}$/iu';
    preg_match($patern,$_POST['name']);
    ?>
    وهذا هو الحل الحالي اللذي اراة مناسب .. ولكن على ما اعتقد هناك مكان للتحسين .. انا استعملة حاليا في مشروعي الجديد www.hilaby.com/sites

    مشكلة الجافا سكربت محلولة وبطريقة مناسبة .. ولكن اود اقتراحات الشباب من ناحية السرفر





    __________________
    هلابي افضل المواقع العربية تصميماً
    انصح باستخدام ابونتو

  4. #4
    عضو نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    69


    المشكلة تكمن في تحديد نطاق لحروف اللغة العربية للبحث خلاله عن طريق التعابير الاعتيادية. يمكننا استخدام أحد أصناف الحروف التي تقوم "التعابير الاعتيادية المحسَّنة ERE" بتعريفها للتعبير عن الحروف والأرقام وهو الصنف [:alnum:] لحل تلك المشكلة.

    كذلك نعلم أن حروف اللغة العربية من النوع Multibyte لذلك سنتعامل معها علي هذا الأساس.

    كود PHP:
    $result mb_ereg("^[[:alnum:] ]{6,}$""سوالف swalif 2008");
    var_dump($result); 
    برجاء تجربة هذه الطريقة لمعرفة مدي توافقها مع جميع الأنظمة.










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض