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

الموضوع: ممكن شرح preg_filter

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    61

    ممكن شرح preg_filter



    ممكن شح الكود التالي
    كود:
    <?php
    $subject = array('1', 'a', '2', 'b', '3', 'A', 'B', '4'); 
    $pattern = array('/\d/', '/[a-z]/', '/[1a]/'); 
    $replace = array('A:$0', 'B:$0', 'C:$0'); 
    
    echo "preg_filter returns\n";
    print_r(preg_filter($pattern, $replace, $subject));
    والناتج هو

    كود:
    preg_filter returns
    Array
    (
        [0] => A:C:1
        [1] => B:C:a
        [2] => A:2
        [3] => B:b
        [4] => A:3
        [7] => A:4
    )








  2. #2
    عضو نشيط
    تاريخ التسجيل
    Apr 2010
    المشاركات
    46


    هي هي مثل preg-replace تعمل اسبدال بستخدام التعابير النظامية
    http://www.php.net/manual/en/function.preg-replace.php





    __________________
    شاهد بعض من اعمالي
    www.kindi.biz
    www.akkam.org

  3. #3
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    61


    شكرا لردك لكن

    انا اريد شرح ناتج هذا الكود بالضبط ( لم افهم 0$ ) وكيف ستتم المقارنة هنا لعماية الاستبدال

    وشكرا ............






  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    Apr 2008
    المشاركات
    361


    إن شاء الله يتطوع أحد ليشرحها لنا.





    __________________
    مجلتي الصغيرة

  5. #5
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    61


    up






  6. #6
    عضو نشيط
    تاريخ التسجيل
    May 2010
    المشاركات
    76


    السلام عليكم ورحمة الله وبركاتة

    بالنسبه ل $0

    فمعناها التراجع لالتقات مجموعات

    حاولت شرحها بالعربى لتبسيطها لكن اسمها الفعلى

    backtracking into capturing groups

    بمعنى انت تبحث عن الكلمات ما بين الحرف a او b

    سيتم كتابتها كالاتى

    (a|b)([^\1]*)\1

    او
    (a|b)(.*)\1

    لكن السؤال لماذا يستخدم
    $
    بدلا من
    \

    علامة باك سلاش تستخدم فى الباترن

    اما علامة الدولار تستخدم فى النتيجة

    بمعنى

    preg_replace('(a|b)\1','$1','ahmeda');

    و صفر بمعنى النتيجه كلها ليست مجموعه محدده

    ارجو ان تكون اتضحت هذه النقطه

    اما بالنسبه للباتيرن الموجود فهو

    عباره عن مصفوفه فو والريبلاس

    بمعنى ان لو النتيجه من المصفوفه رقم 0 سيتم استبدالها بالريبلاس رقم 0

    بشكل مقصل اكثر

    $pattern = array('/\d/', '/[a-z]/', '/[1a]/');
    $replace = array('A:$0', 'B:$0', 'C:$0');

    اذا كانت النتيجه تطابق الاولى وهى

    '/\d/'

    سيتم استبدالها بالاولى المقابله

    'A:$0'

    وهكذا من الباقى

    شرح الباتيرن كالاتى

    الاولى

    /\d/

    اولا علامة سلاش فى الاول وفى الاخر
    /

    لا يتم زكرها لانهاتعتبر محدد
    delimiter

    بالنسبه ل
    \d

    فهى تبحث عن اى رقم وتساوى

    0-9

    بالنسبه للتانى
    /[a-z]/

    فهى للبحث عن الحروف من
    a
    الى
    z

    والقوسين
    []
    يقوم بمظابقة اى من المكتوب داخلهم بمعنى
    [abc]

    لو تساوى
    a
    او
    b
    او
    c

    بالنسبه للاخير

    /[1a]/

    اظنها واضحه فهى تبحث عن
    1
    او
    a

    هيه باترن صحيح فى بعض النتائج لكنه لم يعرض الا فى حالة
    1a
    او
    a1

    لان لو غير ذلك سيصبح

    حرف او رقم وهناك باترن قبلها سيتم تنفيزها وتجاهل الاخر

    ارجو ان تكون اتضحت الفكره كامله
    ولو وجد اى استفسار اخر ساقوم بشرحه بازن الله

    ان كنت صح فمن الله وان كنت مخطئ فمن نفسى والشيطان





    __________________
    Mahmoud Abd El-Hamed
    Web Developer
    Mobile: +2 0192565454
    E-mail: admin(at)developspot.com
    Site: ( رابط ) http://developspot.com

  7. #7
    عضو نشيط
    تاريخ التسجيل
    May 2010
    المشاركات
    76


    السلام عليكم ورحمة الله وبركاتة

    بالنسبه ل $0

    فمعناها التراجع لالتقات مجموعات

    حاولت شرحها بالعربى لتبسيطها لكن اسمها الفعلى

    backtracking into capturing groups

    بمعنى انت تبحث عن الكلمات ما بين الحرف a او b

    سيتم كتابتها كالاتى

    كود PHP:
     (a|b)([^\1]*)\
    او
    كود PHP:
     (a|b)(.*)\
    لكن السؤال لماذا يستخدم
    $
    بدلا من
    \

    علامة باك سلاش تستخدم فى الباترن

    اما علامة الدولار تستخدم فى النتيجة

    بمعنى

    كود PHP:
    preg_replace('(a|b)\1','$1','ahmeda'); 
    و صفر بمعنى النتيجه كلها ليست مجموعه محدده

    ارجو ان تكون اتضحت هذه النقطه

    اما بالنسبه للباتيرن الموجود فهو

    عباره عن مصفوفه فو والريبلاس

    بمعنى ان لو النتيجه من المصفوفه رقم 0 سيتم استبدالها بالريبلاس رقم 0

    بشكل مقصل اكثر

    كود PHP:
    $pattern = array('/\d/''/[a-z]/''/[1a]/'); 
    $replace = array('A:$0''B:$0''C:$0'); 
    اذا كانت النتيجه تطابق الاولى وهى

    كود PHP:
     '/\d/' 
    سيتم استبدالها بالاولى المقابله

    كود PHP:
     'A:$0' 
    وهكذا من الباقى

    شرح الباتيرن كالاتى

    الاولى

    كود PHP:
     /\d
    اولا علامة سلاش فى الاول وفى الاخر
    /

    لا يتم زكرها لانهاتعتبر محدد
    delimiter

    بالنسبه ل
    كود PHP:
     \
    فهى تبحث عن اى رقم وتساوى

    كود PHP:
     0-
    بالنسبه للتانى
    كود PHP:
     /[a-z]/ 
    فهى للبحث عن الحروف من
    a
    الى
    z

    والقوسين
    []
    يقوم بمظابقة اى من المكتوب داخلهم بمعنى
    [abc]

    لو تساوى
    a
    او
    b
    او
    c

    بالنسبه للاخير

    كود PHP:
     /[1a]/ 
    اظنها واضحه فهى تبحث عن
    1
    او
    a

    هيه باترن صحيح فى بعض النتائج لكنه لم يعرض الا فى حالة
    1a
    او
    a1

    لان لو غير ذلك سيصبح

    حرف او رقم وهناك باترن قبلها سيتم تنفيزها وتجاهل الاخر

    ارجو ان تكون اتضحت الفكره كامله
    ولو وجد اى استفسار اخر ساقوم بشرحه بازن الله

    ان كنت صح فمن الله وان كنت مخطئ فمن نفسى والشيطان





    __________________
    Mahmoud Abd El-Hamed
    Web Developer
    Mobile: +2 0192565454
    E-mail: admin(at)developspot.com
    Site: ( رابط ) http://developspot.com





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

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

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