08 by al-shammari2006

VIEWS: 4 PAGES: 12

More Info
									                ‫تتبع وتصيد ومنع االخطاء‬
            ‫(‪)avoiding and handling errors‬‬
  ‫إن مصطلح الـ‪ debbug‬هو من المصطلحات الشائعة والشيقة في عالم البرمجة ، هذا المصطلح يشـير إلـ‬
‫كيفية إصالح أخطاء البرنامج وتوقعها قبل حدوثها ، هناك أنـوا مـن اطخطـاء تحـدب اـبب المبـرمج وهنـاك‬
 ‫أنوا من اطخطاء تحصل ابب الماتخدم ، فـي العـا ي يجـب أن ي ـون المبـرمج مت لفـاص مـ مصـطلح تتبـ‬
                                                                                ‫اطخطاء وإصالحها .‬

‫قد ي ون من أهداف تتب اطخطاء الحماية قدر أهميـ البرنـامج الجـارل العمـل عليـ أو الموقـ ف لمـا كـان‬
                                                                 ‫الموق مهماص كان وجوب حمايت أكبر .‬

‫قد ي ون من اطسباب التـي تاـبب تـدميراص للمواقـ هـو أن صـاحب الموقـ يلطـي كـل صـليري وكبيـري عـن‬
‫رنامج الذل يركب في موقع وقد ي ون رنامج هذا غير محمي ابب كاف أو ي ون ماـير عـدي ملفـات‬
  ‫فيقوم شخص حذف ملف من الملفات اطساسية ابب عدم قة في التراخيص المعطـاي ممـا يـ ل إلـ‬
                                                                               ‫مار الموق نهائياص .‬

‫وقد ي ون صاحب الموق مهمال ص في الحد ذات فال يحتفظ المعلومات الاـرية لموقعـ ممـا ياـبب مشـاكل‬
                                                ‫أكبر من التدمير مثل احتالل الموق ش ل كامل .‬

‫رسائل الخطا في الـ‪ PHP‬لها طريقتها وتقنيتها الخاصة التي تاير عليها فهـي لياـم مثـل الجافـا ولياـم‬
                                                                                         ‫مثل ‪cgi‬‬
                ‫فالـ ‪ PHP‬ال تقوم إرسال الخطأ إل الايرفر ل تقوم تا ة رسالة خطأ في م ان الخطأ .‬

‫قد ي ون هناك أخطاء يصعب تتبعها أو معرفة م انها في اطصل ، وقد ي ون هذا ابب أنك تاـتخدم الــ‪PHP‬‬
‫في صناعة موق ينامي ي وتشرك معها الجافا س ر م وتض عالمات التعليـ الخاصـة التـي تقـوم إخفـاء‬
                                   ‫اطخطاء في الجافا مما قد يجعلك تشعر الحيره وتجن أين م ان الخطأ‬
‫- -!<‬
 ‫رسال الخطا‬
‫>--‬

                                                                                ‫أنواع األخطاء‬
‫هناك أنوا من اطخطاء منها اإلمالئية (‪ )Syntax Error‬ومنها المنطقية ومنها أخطاء تحدب في وقم التنفيذ‬

                                                                          ‫ومثال اطخطاء اإلمالئية :‬
‫?<‬
‫;”1“ ‪Eco‬‬
‫من المفترض أن ت م التالي : //‬
‫;”1“ ‪Echo‬‬
‫>?‬
                                                              ‫هذا سيعطيك رسالة خطأ ‪Parse error‬‬

                        ‫ومن اطخطاء اإلمالئية نايان الفاصلة المنقوطة (‪ )semi-colon‬في نهاية الدالة :‬
‫?<‬
‫”‪Echo “hello‬‬
‫من المفترض أن ت م التالي : //‬
‫;”‪Echo “hello‬‬
‫>?‬
‫هنا سوف يعطيك الـ‪ PHP‬رسالة خطأ ل ن العجيب أن لن يعطيك إياها ش ل صـحيح فرسـالة الخطـأ تشـير‬
                            ‫إل أن الاطر الرا يحتول عل الخطأ ينما الخطأ هو في الاطر الثاني .‬
                                       ‫وهناك خطأ آخر يحصل ابب نايان الـ‪ ( brace‬وهي االقواس ) :‬
‫‪<? Php‬‬
‫) ++ ‪for ($loop = 0 ; $loop < 5 ; $loop‬‬
‫{‬
‫;”“ ‪Echo‬‬
‫>?‬
  ‫اذا كنم قد نايم إغالق القوس فهذا من اطخطاء الشائعة ، واطخطاء اإلمالئية اليم ن حصرها ، إنها أشـب‬
                                        ‫قواعد الللة ، ل ن أكثر اطخطاء اإلمالئية الشائعة في رامج الـ‪PHP‬‬

                                                                       ‫1 – نايان اطقواس . مثال :‬
‫?<‬
‫) ++ ‪for ($loop = 0 ; $loop < 5 ; $loop‬‬
‫{‬
‫) ++ 1‪for ($loop1 = 0 ; $loop1 < 10 ; $loop‬‬
‫{‬
‫) ++ ‪for ($loop = 0 ; $loop < 5 ; $loop‬‬
‫{‬
‫.… ‪code‬‬
‫}‬
‫}‬
                                           ‫في المثال الاا ينقصنا قوس إغالق الت رار اطخير ( } )‬

                                                                  ‫2 - نايان الفاصلة المنقوطة . مثال :‬
‫?<‬
‫01 ‪Echo‬‬
‫?<‬

                                                            ‫3 - خطأ إمالئي في اسم ‪ . function‬مثال :‬
‫?<‬
‫;)‪Htmlspecialchar($I‬‬
‫>?‬
                                                                                ‫سيعطيك رسالة خطأ :‬
‫.)(‪Fatal error : call to Undefined function : htmlspecialchar‬‬
                                                                                ‫وتصحيحها أن ت ون :‬
‫?<‬
‫;)‪Htmlspecialchars($I‬‬
‫>?‬

                                                                       ‫4 - نايان إغالق النص . مثال :‬
‫?<‬
‫;‪Echo “arabbuilder‬‬
‫>?‬
                                                  ‫ناي الـ(")في نهاية ال لمة . وسيعطيك ‪Parse error‬‬
                                                                  ‫األخطاء المنطقية (‪)Logical Errors‬‬
‫إن اطخطاء المنطقية هي اطكثر صعو ة في التتتب فقـد تجـد رنامجـك يعمـل شـ ل صـحيح و ـل سـالمة‬
‫ول ن عند نقطة ما اليتم تنفيذها كما تريد أنم ، لنضرب مثال ص عل خطأ منطقـي اـيج جـداص ، لنفـرض أنـك‬
‫قمم عمل نموذج م ون من مر نص وزر ، عند ضلطك لهذا الزر فأنم تريد أن يتم كتا ة كلمة كبيـر إذا كـان‬
                   ‫الرقم أكبر من 33 وكلمة صلير إذا كان الرقم أصلر من 33 لنقم تا ة ال و للمثال اطول :‬
‫?<‬
‫; ": ا خل عمرك" ‪echo‬‬
‫>‪echo '<br‬‬
‫>"‪<form method = "post" action = "age.php‬‬
‫>"‪<input type= "text" name = "age‬‬
‫>‪<br‬‬
‫> "هل أنا كبير أم صلير ؟" = ‪<input type= submit value‬‬
‫; '>‪</form‬‬
‫>?‬

                                                                    ‫في ملف ‪ age.php‬اكتب ال و التالي :‬
‫?<‬
‫;”انم صلير“ ‪If ($age<30) echo‬‬
‫;”انم كبير“ ‪If ($age>30) echo‬‬
‫>?‬
‫سيعمل الاي ريبم ش ل صحيح .. ول ـن ر مـا تخطـأ أنـم فـي كتا ـة العالمـات المنطقيـة ( التـي ـاللون‬
                                                                     ‫اطحمر ) فتأتي النتائج ش ا خاطئ .‬

‫ومن اطخطاء المطنقية اطخطاء التي تق في وقم التشليل (‪ )Run times error‬والتي ت ون قد تقوم إيقاف‬
                                                                          ‫رنامجك ش ل كامل‬
                                                                                        ‫مثال :‬
‫?<‬
‫;0=‪$t‬‬
‫;1=‪$r‬‬
‫;‪$f=$r/$t‬‬
‫>?‬
                                                              ‫وعندها سينتج لك الرسالة التالية‬
‫) ‪Warning : Division by zero in (path) on line (line number‬‬

‫هناك نو آخر من اطخطـاء المنطقيـة (‪ )unexpected‬وهـو ال يقـوم إيقـاف البرنـامج نهائيـاص ـل يقـوم ـإخراج‬
‫رسالة الخطأ في م ان الخطأ أو قد يقوم تنفيذ البرنامج وإخراج البيانـات شـ ل غيـر صـحيح أو قـد ال يقـوم‬
                                                                                              ‫إخراج يانات‬
                                                         ‫وهو المثال االول الذل ذكرناه سا قا (تقييم العمر) .‬

                                                                                           ‫اخطاء الت رارات‬
                                 ‫قد ي ون لديك أيضا ت رار في خطأ وال يقوم التوقف نهائياص مثل هذا الت رار :‬
‫;1=‪$c‬‬
‫;‪$t=true‬‬
‫)‪while ($t=true‬‬
‫{‬
‫;++‪$c‬‬
‫}‬

‫لم نقم عمل شي يوقف الت رار مثل أن تض شرط يختبر قيمة المتلير (‪ )$c‬ثم يقوم إيقاف عند تعدي رقم‬
                        ‫معين وعل ذلك فإن الت رار سياتمر ش ل غير متوقف ولن يعمل البرنامج .‬
                                                                          ‫عدم ارجا قيم من ‪function‬‬
                                                                                            ‫مثال :‬
‫?<‬
‫)‪Function ($d‬‬
‫{‬
‫;‪$d =$d+$d‬‬
‫}‬
‫أكثر من قيمة ونناي‬      ‫الخطا هنا اننا لم ناتخدم الـ‪ return‬ل ي ننهي الدالة أو قد ت ون الدالة تحتول عل‬
                                                                 ‫أن نقوم تحديد القيمة النهائية للدالة‬

                                                               ‫الخلج في المعامالت الحاا ية والمنطقية‬
                                                                                              ‫مثال :‬
‫; 21 ‪If ($y=10) echo‬‬
                                                                                     ‫والمفترض أن ت ون :‬
‫; 21 ‪If ($y= =10) echo‬‬

                                                                 ‫أفكار جيدة لتفادي األخطاء‬
                                                                                     ‫التعليقات‬
   ‫إن من اطف ار الجيدي للتقليل من اطماكن التي تبحث فيها عن الخطأ هو وض تعليقات لوصف وظيفة الة‬
                                                                                ‫معينة . مثال :‬
‫?<‬
‫هذه ال و يقوم طباعة كلمة أحمد //‬
‫; ”أحمد“ ‪Echo‬‬
‫>?‬

                                                                                                   ‫الدوال‬
   ‫وال حيث أن ل ل الة وظيفتها المعينة :‬            ‫وأيضا من اطف ار الجيدي أن تقوم تقايم وظائف البرنامج عل‬
‫?<‬
‫*/‬
        ‫+-------------------------------------------------------------- -+‬
        ‫|‬       ‫هذه الدال تقوم قام العد علي 2‬                             ‫|‬
        ‫+-------------------------------------------------------------- -+‬
‫/*‬
‫)‪function ($U‬‬
‫{‬
‫;2/‪$U=$U‬‬
‫; ‪return $U‬‬
‫}‬
‫>?‬

                                                                                ‫‪Regular Expressions‬‬
‫هذه التقنية تااعدك عل تفا ل اطخطاء في صفحتك عند حدوث مثل أن يقـوم ماـتخدم مـا تا ـة ريـد‬
‫ال تروني غير صحيح (مثال : ‪ )a@y@.k.d‬هذا البريد غير صحيح وطجل أن تقوم منـ حصـول أل خطـأ مثـل‬
‫ذلك وتقييد العبـارات التـي يـدخلها الماـتخدم فإنـك تقـوم إسـتخدام ال/‪ )Regular Expressions( RE‬إنـك‬
‫اطصح تجعل قواعد لل لمات التي يدخلها الماتخدم فمثال ص تجعل الماتخدم اليدخل سول أرقام أو حـروف‬
     ‫فقج أو ش ل معين من ال لمات ، تقوم أوال ص إنشاء نمج لل لم التي تريد الماتخدم أن يقوم ا خالها .‬
                                                                                         ‫النمج (‪)pattren‬‬
 ‫ماهو النمج ؟ مارأيك إذا كتب الماتخدم جملة في مر نص تحتول عل عدي كلمـات وتريـد أن تتأكـد مـن‬
‫وجو كلمة معينـة وسـج هـذه الجملـة ، علـ حاـب مـا اخـذناه مـن معلومـات علـ المصـفوفات سـا قاص‬
                                                                              ‫ناتطي فعل ذلك كالتال :‬
 ‫?<‬
 ‫;”,‪$words=”one, two, three, four, five‬‬
 ‫;)‪$ty =explode (“”,$ty‬‬
 ‫{ )‪foreach ($ty as $w‬‬
         ‫;”’‪if ($w = = “six”) echo “found string ‘two‬‬
 ‫}‬
 ‫>?‬
   ‫لقد كان المتلير ‪ $words‬يحتول عل جملة تت ون من عده كلمـات وعنـدما أر نـا فحصـ قمنـا استخالصـ‬
 ‫في مصفوفة ثم عد ذلك قمنا فحص المصفوفة استخدام الت رار ‪ ، foreach‬وم ذلك الذل فعلناه فإن هذا‬
  ‫االستخدام غير عملي تاتاص وهنا تبـرز قـوه ‪ Regular Expressions‬الحـظ اآن كيـف ناـتخرج واسـطة الــ‬
                                                                                 ‫‪: Regular Expressions‬‬
 ‫?<‬
 ‫;”,‪$words=”one, two, three, four, five‬‬
 ‫; “ ’‪ ‘ one‬لقد وجدت العد “ ‪if (ereg(“one”,$words)) echo‬‬
 ‫>?‬
 ‫في هذا المثال قمنا استخدام الدالة (‪ )ereg‬ووضعنا في خانتها اطول النمج (‪ )pattern‬الذل نريد أن نتأكد‬
 ‫من وجو ه (أوال لمة المرا البحث عنها) ووضعنا في الخانـة الثانيـة المتليـر الـذل سـيتم البحـث فيـ عـن‬
                                                                                        ‫ال لمة أو النمج .‬
                                           ‫تقوم الدالة ‪ ereg‬إعطاء القيمة ‪ true‬إذا تم العثور عل ال لمة .‬
                                                        ‫في الواق هناك استخدامات أكثر فعالية لألنماط .‬
                                     ‫يم ننا مثال ص تخزين ال لمة إذا تم وجو ها في مصفوفة خاصة كالتال :‬
 ‫?<‬
 ‫;”,‪$words=”one, two, one, four, five‬‬
 ‫; ))‪if (ereg(“one”,$words,$rok‬‬
 ‫;]0[‪echo $rok‬‬
 ‫;]1[‪echo $rok‬‬
 ‫>?‬
 ‫نقوم وض اسم المصفوفة التي نريد تخزين البيانات في الخانة الثالثة .. الحـظ مـ أنـ يوجـد كلمتـين فـي‬
 ‫الجملة تواف النمج إال ان أعطانا كلمة واحدي فقج إذ أن وظيفت أن يتأكد من وجو النمج في الجملـة فقـج‬
                                    ‫فإذا تأكد من وجو ها مري واحدي است ف واعتبر الموضو قد انتهي .‬

                                   ‫ماذا لو أر نا من التأكد من عدي كلمات ، عند ذلك فإننا نفعل التال :‬
‫?<‬
‫;”,‪$words=”one, two, one, four, five‬‬
‫;]0[‪if (ereg(“one”,$words,$rok)) echo $rok‬‬
‫;]0[‪if (ereg(“two”,$words,$rok)) echo $rok‬‬
‫>?‬
  ‫واريد أن أنبهك أن الـ‪ ereg‬يقوم إنشاء المصفوفة من جديد عند كل استعمال ل فخذ حذرك من هذه النقج‬
                                            ‫أيضا فإن الـ‪ ereg‬حااس لحالة اطحرف الحظ هذا المثال :‬
‫?<‬
‫;",‪$words="one, two, vcx, four, five‬‬
‫;]0[‪if (ereg("One",$words,$rok)) echo $rok‬‬
‫>?‬

                                                     ‫لن يقوم إخراج أل شي فقج طن حرف الـ‪ O‬مختلف .‬
                                                   ‫:‬     ‫أيضا يم نك البحث عن كلمة يابقها فراغ مثال ص كالتال‬
‫?<‬
‫;",‪$words="one, two, vcxone, four, five‬‬
‫;]0[‪if (ereg("one",$words,$rok)) echo $rok‬‬
‫>?‬
                                                                                                  ‫مثال آخر :‬
‫?<‬
‫;",‪$words="oned, two, vcxone, four, five‬‬
‫;]0[‪if (ereg("one",$words,$rok)) echo $rok‬‬
‫>?‬
  ‫الحظ في هذين المثالين أن م أن كلمة ‪ one‬غير موجو ي مفر ها إنما موجو ي كجزء مـن ‪ vcxone‬و‪oned‬‬
                                      ‫ورغم ذلك فإن الدالة لم تأخذ اعتبارا لذلك ينما لو كتبنا كالتال :‬
‫?<‬
‫;",‪$words="oned, two, vcxone, four, five‬‬
‫;]0[‪if (ereg(" one",$words,$rok)) echo $rok‬‬
‫>?‬
            ‫فإن سيبحث عن ال لمة مفصولة عن أل حرف ولن يجد كلمة كذلك فلن يقوم تا ة أل شي .‬

                                                          ‫:‬   ‫يم ننا أن نفحص قيمة موجو ي في متلير كالتال‬
‫?<‬
‫;"‪$reu = "one‬‬
‫;",‪$words="one, two, vcxone, four, five‬‬
‫;]0[‪if (ereg($reu,$words,$rok)) echo $rok‬‬
‫>?‬
‫هل الحظم أننا فحصنا قيمة المتلير ‪ $rue‬واسطة ‪ ereg‬م ‪ $word‬ولم يتطلب منا ذلك أل شـي إضـافي‬
                                          ‫غير اسم المتلير المرا البحث عن قيمت في الجمل .‬

‫يم ننا الـ ‪ Regular Expression‬استعمال عض اطحرف ش ل خاص التي لها اسـتعمالها الخـاص واسـطة‬
                                                                ‫الـ ‪Regular Expressions‬‬

                                               ‫:‬       ‫اطحرف الخاصة في الـ ‪ Regular Expression‬هي كالتال‬
                                  ‫\|$^}{)(][+?*.‬
                                               ‫هذه اطحرف لها معناها الخاص في الـ ‪Regular Expression‬‬

         ‫:‬   ‫فقديماص مثال ص كنا نقول أن ال يم ننا أن ناتخدم عالمتي تنصيص متداخلة من نفس النو كالتال‬
‫?<‬
‫;””\‪$r=”u‬‬
‫>?‬
                             ‫ول ي يتجاهل الـ‪ PHP‬هذا المعني فإننا نقوم وض (\) قبل عالمة التنصيص .‬
                               ‫ايضا م الـ ‪ ereg‬فإن للـ(.) قداستها ول ي يتم تجاهلها فإننا ناتخدم الـ(\)‬

                                           ‫:‬       ‫تقوم الـ(.) أخذ م ان حرف أو فراغ فمثال ص الحظ المثال التال‬
‫?<‬
‫;"‪$P="I love yamen‬‬
‫;]0[‪if (ereg ("love....",$P,$R)) echo $R‬‬
‫>?‬
                                                                                       ‫هل الحظم الناتج ؟؟‬
               ‫ول ي يتم تجاهل قداسة الـ(.) في الـ‪ Regular Expressions‬نقوم وض (\) قبلها . مثال :‬
‫?<‬
‫;"‪$P="I love yamen‬‬
‫;]0[‪if (ereg ("love\.\.\.\.",$P,$R)) echo $R‬‬
‫>?‬
‫في هذا المثال لن يتم طباعة أل شي طن اليوجد أل كلمة تطا (....‪ )love‬طن الـ(.) فقدت قداستها و دأ‬
                                                                 ‫التدقي في ال لمة حرفاص حرفاص .‬

                                                                       ‫صناعة فئة حروف ]‪[xyz‬‬
    ‫أقصد ذلك أنني احد نطاق معين من ال لمة من المم ن أن ي ون في هذا النطاق أل حروف من الفئة‬
                                              ‫التي أقوم تحديدها أو الحروف التي أقوم تحديدها .‬
                                                                                       ‫مثال :‬
‫?<‬
‫; “ ? ‪$y=”how are you‬‬
‫;”‪if (ereg(“h[oe]” , $y)) echo “true‬‬
‫>?‬
 ‫هنا قام الـ‪ regular expression‬البحث عن أل كلمة تبدأ الحرف ‪ h‬ومن ثم يتبعها أحد الحرفين ‪ o‬أو ‪ e‬مثال‬
                                                                                   ‫هذه ال لمات :‬
‫‪Hey – He – Hew - Homer‬‬
                                                                                  ‫ول نها التطا :‬
‫‪Hty – Hnt - Hlay‬‬
                                                                  ‫أتمني أن ت ون فهمم ما أرمي إلي‬

‫حروف معينة وذلك‬     ‫يم ننا أيضا أن نقوم إخبار الـ‪ regular expression‬أن ال يقوم اختيار كلمات تحتول عل‬
                                                                                      ‫فقج إضافة ^‬
‫?<‬
‫; “ ? ‪$y=”how are you‬‬
‫;”‪if (ereg(“h[^oe]” , $y)) echo “true‬‬
‫>?‬
    ‫نقوم هنا إخبار الـ‪ re‬أن يقوم فحص الجملة فإذا وجد أل كلمة تبدأ ـ‪ h‬والتحتول عل ‪ o‬أو ‪ e‬فإن يقوم‬
                                                           ‫إعطاء ‪ true‬وإذا لم يجد يقوم اعطاء ‪false‬‬
                                                                  ‫وهذا ال الم يطا ال لمات التالية :‬
‫‪Hay - Hana - Hkg‬‬
                                                                              ‫هذه ال لمات :‬  ‫واليواف‬
‫‪Home – Hore - Here‬‬

   ‫أل رقم كنا سن تب كالتال‬    ‫يم ننا استعمال اختصارات لبعض اطمور فمثال ص إذا كنا نريد كلمة التحتول عل‬
                                                                                         ‫]987654321^[‬
                                                     ‫يم ننا أن ناتعمل اختصار لهذا الموضو كالتال :‬
                                                                                               ‫]9-0^[‬
                         ‫وحتي إذا أر نا أن يتأكد من وجو رقم من واحد ال تاع فقج علينا ماح الـ^‬
                                                                                                  ‫]9-0[‬
                                                                       ‫وأيضا الحروف الصليري من ‪ a‬ال ‪z‬‬
                                                                                                  ‫]‪[a-z‬‬
                                                                          ‫وإذا نريد التأكد من عدم وجو ها‬
                                                                                                ‫]‪[^a-z‬‬
                                                                         ‫نفس القصة م الحروف ال بيري .‬
                                                          ‫:‬     ‫هناك اختصارات اخرل لهذا الموضو كالتال‬

                                ‫معناه ووظيفت‬                     ‫ل‬    ‫المطا‬                    ‫االختصار‬
                          ‫أل رقم من 3 ال 9‬                           ‫]9-0[‬                          ‫‪\d‬‬
                    ‫ممنو اطرقام من 3 ال 9‬                           ‫]9-0^[‬                          ‫‪\D‬‬
                     ‫أل رقم من 1-9 أو حروف‬                    ‫]_‪[0-9A-Za-z‬‬                          ‫‪\w‬‬
                      ‫‪ A-Z‬او احرف صليره او_‬
                                 ‫ع س الاا‬                 ‫]_‪[^0-9A-Za-z‬‬                            ‫‪\W‬‬
                   ‫يقبل ماافة أو سطر جديد‬                       ‫]‪[\t\n\r‬‬                            ‫‪\s‬‬
                        ‫أو عالمة جدولة (‪)tab‬‬
                                 ‫ع س الاا‬                        ‫]‪[^\t\n\r‬‬                          ‫‪\S‬‬

                                                                                     ‫تحديد م ان ال لمة‬
‫يم ننا أن نقوم تحديد م ان ال لمة ، اقصد ذلك أن يم نك تحديد م ان ال لمة إذا كانم في داية أو نهايـة‬
                  ‫النص وناتخد لهذا اطمر العالمتين (^)لتحديد الم ان لبداية الجملة و ($) لنهاية الجمل .‬
                                                                                                 ‫مثال :‬
‫?<‬
‫; " ? ‪$y="how are you‬‬
‫;"‪if (ereg("^h",$y)) echo "true‬‬
‫>?‬
   ‫هنا سيقوم الـ‪ php‬البحث عن في الحملة فإذا وجد الجملة تبدا حرف ‪ h‬كانم قيمة الـ‪ ereg‬تااول ‪true‬‬
                                                             ‫وإذا لم يجد كانم قيمة الـ‪ ereg‬تااول ‪false‬‬
‫?<‬
‫; "?‪$y="how gone‬‬
‫;"‪if (ereg("^g",$y)) echo "true‬‬
‫>?‬
                                       ‫في هذا المثال ست ون قيمة الـ‪ ereg‬خطأ طن العباري التبدأ حرف ‪g‬‬
     ‫يم ننا فعل الع س واسطة العالم ($) التي عملها ع س (^) فهي تفحص إذا كان الحرف المرا فحص‬
                                                                                ‫موجو في نهاية الجملة‬
                                                                                                 ‫مثال :‬
‫?<‬
‫; "‪$y="how g‬‬
‫;"‪if (ereg("g$",$y)) echo "true‬‬
‫>?‬

                                ‫يم ننا أيضا اختيار إذا ما كان واحد من نمطين صحيحاص واسج العالمة ( | )‬
‫?<‬
‫; "‪$y="how g‬‬
‫;"‪if (ereg("^y | g$",$y)) echo "true‬‬
‫>?‬
   ‫في هذا المثال سيقوم الـ‪ PHP‬فحص الجملة فإذا وافقم أحد النمطين كانم قيمة الـ‪ ereg‬عند ذلك ‪. true‬‬

‫يم ننا أيضا تحديد إذا ما كان حرف أو جملة مت رري عد من المرات أو مره واحدي استخدام أحد هذه الثالب‬
                                                                               ‫رموز ( * ، + ، ? )‬
               ‫تقوم عالم الضرب التحق من أن الحرف الذل يابقها م رر مري أو أكثر أو غير موجو تاتاص‬
                                                                                           ‫مثال :‬
‫‪Bea*t‬‬
                                                                                         ‫وتواف :‬
‫‪Bet‬‬
‫‪Beat‬‬
‫‪Beaat‬‬
                                            ‫تقوم عالمة الجم (+) التأكد من وجو عنصر مري أو أكثر :‬
‫‪Bea+t‬‬
                                                                                               ‫:‬   ‫وتواف‬
‫‪Beat‬‬
‫‪Beaat‬‬
‫‪Beaaaaat‬‬
                       ‫أما عالمة االستفهام فتقوم التأكد من وجو عنصر مري واحده أو عدم وجو ه تاتاص :‬
‫‪Bea?t‬‬
                                                                                               ‫:‬   ‫وتواف‬
‫‪Bet‬‬
‫‪Beat‬‬
                                                     ‫حرف .‬    ‫وتأكد ائماص أن هذه الثالب عالمات مابوق‬

               ‫حرفين أو ثالب ش ل تحديدل يم نك استخدام القوسين‬           ‫وعند إرا تك مثال ص التأكد من سب‬
                                                                                                 ‫مثال :‬
‫‪(wo)?man‬‬
                                                                                               ‫:‬   ‫ويواف‬
‫‪man‬‬
‫‪woman‬‬

 ‫يم ننا التأكد من ت رر حرف ش ل معين من المرات أو أكبر مـن عـد معـين مـن المـرات أو أصـلر مـن عـد‬
                                                           ‫معين من المرات استخدام القوسين }‪{x,y‬‬
                                     ‫فمثال ص لو أر نا أن نتأكد من أن حرف (‪ )d‬م رر مرتين إل أر مرات :‬
‫}4,2{‪d‬‬
                       ‫أما إذا أر نا أن نتأكد من أن م رر أكثر من مرتين إل عد غير محدو من المرات :‬
‫},2{‪d‬‬
                                                             ‫أما إذا أر ناه أن يت رر 4 مرات عل اطكثر :‬
‫}4,{‪d‬‬
                                                         ‫أو إذا ار ناه أن يت رر عد محدو من المرات :‬
‫}8{‪d‬‬

  ‫االختصار (‪ )\b‬الذل معناه أل شي ول ن ليس حرفاص (الحروف التي ين ‪\w‬‬          ‫أخيراص نريد أن نلفم النظر إل‬
                                                                                      ‫و ين ‪ \W‬تقريباص )‬
                                    ‫:‬    ‫ملخص ما أخذناه من القواعد تجدون في الجدول التال‬

                                           ‫المعني‬                                 ‫القاعده‬
                        ‫أل حرف كان ‪ a‬او ‪ b‬او ‪c‬‬                                     ‫]‪[abc‬‬
                         ‫أل حرف غير ‪ a‬و ‪ b‬و ‪c‬‬                                     ‫]‪[^abc‬‬
                         ‫كل الحروف من ‪ a‬ال ‪z‬‬                                        ‫]‪[a-z‬‬
                     ‫‪ \d‬لالرقام و ‪ \D‬للير االرقام‬                                   ‫‪\d\D‬‬
          ‫‪ \w‬للحروف جميعها و‪ \W‬للير الحروف‬                                         ‫‪\w\W‬‬
         ‫‪ \s‬للفراغ (‪ )space‬و‪ \S‬للير الفراغ ( ‪no‬‬                                      ‫‪\s\S‬‬
                                           ‫‪)space‬‬
                       ‫الحروف التي ين ‪ \w‬و‪\W‬‬                                          ‫‪\b‬‬
                                          ‫أل حرف‬                                       ‫.‬
                   ‫تقوم اعتبار ‪ abc‬كمجموع ..‬                                       ‫)‪(abc‬‬
       ‫حرف او مجموعة حروف م رره مره اوغير‬                                              ‫؟‬
                                      ‫م رره نهائيا‬
       ‫حرف او مجموعة حروف تت رر مره او اكثر‬                                            ‫+‬
       ‫حرف او مجموعة حروف تت رر مره او اكثر‬                                            ‫*‬
                               ‫او قد التت رر نهائيا‬
                  ‫ت رير عد معين من المرات ..‬                                       ‫}‪{x,y‬‬
                  ‫ت رير حد اقصي من المرات ..‬                                        ‫}‪{,y‬‬
                  ‫ت رير حد ا ني من المرات ...‬                                       ‫},‪{x‬‬
                     ‫ت رير عد معين من المرات‬                                         ‫}‪{x‬‬
                                   ‫في داي النص‬                                         ‫^‬
                                   ‫في نهاي النص‬                                        ‫$‬

                                                                   ‫تعبير للتاكد من ايميل‬

‫$*)+]-9-0‪^[_a-zA-Z0-9-]+(\.[_A-Za-z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z‬‬

                                                                              ‫شرح التعبير‬

                                         ‫الشرح‬                                      ‫الرمز‬
                              ‫يجب ان يبدا النص‬                                         ‫^‬
      ‫أل حرف من ‪ a-z‬كبيرا كان او صليرا او _او‬                              ‫]-9-0‪[_A-Za-z‬‬
                                           ‫ارقام‬
       ‫وقد ي ون هذا الحرف مت ررا اكثر من مره‬                                           ‫+‬
        ‫االضاف ال ان قد يتب النقط وحروف‬                               ‫)+]-9-0‪(\.[_A-Za-z‬‬
                                          ‫وارقام‬
      ‫وقد اليتبع اوقد يتبع ويت رر اكثر من مره‬                                         ‫*‬
                 ‫و عد ذلك ي ون لدي حرف ال@‬                                           ‫@‬
                   ‫وايضا نفس القواعد في النهاي‬         ‫$*)+]-9-0‪[a-zA-Z0-9-]+(\.[a-zA-Z‬‬
                                                                                              : ‫مثال‬
<?
Function mailcheck($mail,$t)
{
$T="^[_a-zA-Z0-9-]+(\.[_A-Za-z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*$";
If (EREG($T,$mail))
{
$r="the mail is true";
echo $r;
}
else
{
$r="the mail is not true";
echo $r;
}
return ;
}
mailcheck("alfareees@hotmail.com",$t);
?>

                                                                                          eregi()
     ‫ أن غير حااسة لحالة اطحرف كبيري أو صليري أل أن يم ننا كتا ة‬ereg ‫الفرق ين هذه الدالة والدالة‬
                                                                         : ‫المثال الاا كالتال‬
<?
Function mailcheck($mail,$t)
{
$T="^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$";
If (EREG($T,$mail))
{
$r="the mail is true";
echo $r;
}
else
{
$r="the mail is not true";
echo $r;
}
return ;
}
mailcheck("alfareees@hotmail.com",$t);
?>

                                                                                   ereg_replace()
                    ‫ماذا لو أر ت تحرير عباري ما من أحرف معينة وقد ت ون مت رري في جملة أوغير ذلك‬
                                                                   : ‫لنفرض أن لدينا العباري التالية‬
Mohmed love his game …….
                                                ‫ونريد أن نتخلص من النقاط التي في نهاية العباري‬
                                                                        : ‫أو لدينا مثال ص هذا الماار‬
C:\windows\desktop
                                                               )/( ‫ونريد أن ناتبدل العالمة (\) ـ‬
            ‫كل ذلك مم ن واسطة الدالة ‪ ereg_replace‬وقواعد الـ ‪ rgular expression‬التي أخذناها سا قاص‬
                                                                  ‫البنية التي ناتخدمها للدالة كالتال :‬
‫;)‪Ereg_replace(reg,string,var‬‬
‫نض في م ان ‪ reg‬القاعدي للـ ‪ regular expression‬ونض م ان الـ‪ string‬الحرف الجديد ونض دال ص من الـ‪var‬‬
                                                               ‫المتلير الذل نريد استخالص الحروف من .‬
                                                                                               ‫مثال :‬
‫?<‬
‫;"‪$path =" C:\windows\desktop‬‬
‫;"..... ‪$tell= "Mohmed love his game‬‬
‫;)‪$newpath= Ereg_replace("[\.]","/",$path‬‬
‫;)‪$newtell= Ereg_replace("\.","",$tell‬‬
‫;‪echo $newpath‬‬
‫;">‪echo "<br><br‬‬
‫;‪echo $newtell‬‬
‫>?‬

                                                                       ‫أساليب أخرل لتتب اطخطاء‬
                                                                              ‫استخدام عباره ‪echo‬‬
‫هو من أقدم االساليب وكان ياتخدم مثال ص في فحص عض متليـرات نمـوذج فمـثال ص أنـم لـديك نمـوذج يقـوم‬
 ‫إرسال معلومات إل النموذج وقد تاتخدم في اختبار اطخطاء المنطقية التي ياتصعب متا عتها في ال و‬
                                                                                            ‫مثال :‬
‫?<‬
‫;”‪Echo “this is : $name‬‬
‫;”>‪Echo “<br‬‬
‫;”‪Echo “this is : $Email‬‬
‫كو يقوم معالجة معلومات المتليرين//‬
‫طباعة المتليرين عد ا اء عملية المعالجة ورؤية النتائج//‬
‫;”‪Echo “this is after : $name‬‬
‫;”>‪Echo “<br‬‬
‫;”‪Echo “this is after: $Email‬‬
‫>?‬

                                                                             ‫فحص كو الـ‪html‬‬
 ‫قد تاتخدم كو جافا س ر م ويتم إخفاء اطخطاء وسج عالمات التعليقات فعليك حينئذ فحص كو الـ‪html‬‬
                                                   ‫لرؤية إن كان هناك عض اطخطاء المخفية أم ال .‬

                                                                                   ‫تجاهل اطخطاء‬
   ‫لنفترض أنك تعلم أن الدالة التي صنعتها ها أخطاء ول نك تريد تجاهل هذه اطخطاء ف ل ماعليك أن تقوم‬
                                              ‫وض @ أمام الدالة ل ي يتم تجاهل الخطأ عند حدوث .‬
          ‫مثال ص نحن نعلم أن القامة عل الصفر من اطشياء اللير مقبولة في الـ‪ PHP‬وأنم صنعم الة تقوم‬
  ‫القامة عل صفر ولن يتم تنفيذها طنها اطصل خطأ ول نك تريد أن يقوم ‪ PHP‬تجاهلها ف ل ما عليك أن‬
                                                                    ‫تفعل هو وض @ أمام الدالة .‬
                                                                                           ‫مثال :‬
‫?<‬
‫)‪function amail ($y‬‬
‫{‬
‫;0/‪$y=$y‬‬
‫;‪return $y‬‬
‫}‬
‫;)44(‪$s= @amail‬‬
‫;‪echo $s‬‬
‫>?‬

								
To top