مشروع Arabic PHP .NET Framework : م RegularExp الدرس الثالث : System.RegularExpressions

الناقل : elmasry | الكاتب الأصلى : الحسين | المصدر : www.arabteam2000-forum.com

[FONT=Arial]بسم الله الرحمن الرحيم

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

المجموعة System.RegularExpressions
تقدم هذه المجموعة طريقة سهلة للتعامل مع التعبيرات المنتظمة (Regular Expressions)
وبالطبع لا يخفي علي مبرمجي البي أتش بي والبيرل هذا المصتلح
لذلك لن أتترك لشرح التعبيرات المنتظمة , بل سأكتفي بطرح المجموعة System.RegularExpressions

تضم هذه المجموعة الفئات التالية وهي
+ Regex Class
تتميز هذه الفئة بالتالي :
- هذه الفئة مشتقة من الفئة Object الموجودة بالمجموعة System
- تعتبر الفئة الأساسية بالمجموعة System.RegularExpressions

+ Match Class
تتميز هذه الفئة بالتالي :
- هذه الفئة مشتقة من الفئة Object الموجودة بالمجموعة System
- تعبر هذه الفئة علي وحدة تماثل النمط pattern مع النص الممرر input string
وتتميز بعاملين :
* Index : ويعبر عن موقع الحرف الأول للقيمة التي تماثل النمط
* Value : وتمثل القيمة التي تماثل النمط

+ MatchCollection Class
تتميز هذه الفئة بالتالي :
- هذه الفئة مشتقة من الفئة ArrayList الموجودة بالمجموعة System.Collections
- وتمثل مصفوفة من النصوص التي تم تماثلها مع النمط , او بشكل أدق هي مصفوفة عناصرها كائنات من نوع الفئة Match

ويوضح الشكل التالي تركيب المجموعة System.RegularExpressions
(لاحظ أن الأعضاء أمثال الدوال والثوابت والمتغيرات التي تحتها خط تعبر عن أعضاء إستاتيكية Static members)

Resized to 71% (was 924 x 483) - Click image to enlargePosted Image


لاحظ أن المجلد System.RegularExpressions يحتوي علي التالي
- الملف Match.php يحتوي علي الفئة Match
- الملف MatchCollection.php يحتوي علي الفئة MatchCollection
- الملف Regex.php يحتوي علي الفئة Regex

كيف يمكننا إستخدام هذه الفئات :
سوف ندرج في مجلد ال bin مجموعة ال System.RegularExpressions كما يلي
Posted Image

يمكننا إستخدام تلك الفئات من خلال عمل تضمين including لمحتويات الملف التالي
WebApplication3/bin/System.RegularExpressions.php
وهذا هو محتوي الملف

<?
include_once "System.php";
include_once "System.Collections.php";

include_once "System.RegularExpressions/Match.php";
include_once "System.RegularExpressions/MatchCollection.php";
include_once "System.RegularExpressions/Regex.php";
?>


مثال لإستخدام الفئة Regex
<script language="php">
// إستخدام مكتبة System.RegularExpressions
include_once "../bin/System.RegularExpressions.php";

    // Creates Regex
    $regexp1 = new Regex("/\\w+/");

    echo "<pre>" . $regexp1->GetType() . "</pre>";

    // IsMatch
    echo "<br> [IsMatch] : " . (( $regexp1->IsMatch("mezo") )? "true" : "false");
    echo "<br> [IsMatch] : " . (( $regexp1->IsMatch("?") )? "true" : "false");

    // Replace
    $regexp1->Pattern = "/m/";
    echo "<br> [Replace] : " . $regexp1->Replace("Hello mezo man", "M");
       
    $regexp1->Pattern = "/m|h/i";
    echo "<br> [Replace] : " . $regexp1->Replace("Hello mezo man", "M");

    // Split
    $regexp1->Pattern = "/ /";
    echo "<br><pre> [Split] : " . print_r($regexp1->Split("Hello mezo man"), true) . "</pre>";
       
    $regexp1->Pattern = "/ m/";
    echo "<br><pre> [Split] : " . print_r($regexp1->Split("Hello mezo man"), true) . "</pre>";
</script>


مثال أخر لإستخدام الفئات Regex و MatchCollection و Match
<script language="php">
// إستخدام مكتبة System.RegularExpressions
include_once "../bin/System.RegularExpressions.php";

    // Creates Regex
    $regexp1 = new Regex("/(he\\S*)|(z(o))/");
    $str = "hello mezo , is he man?";

    // Matches
    $matchCol = $regexp1->Matches($str);
    for( $i=0; $i<$matchCol->Count(); $i++ ) {
         $match = $matchCol->Items[$i];
         
         echo "[Match " . ($i+1) . "]<br>";
         echo "Value  : " . $match->Value . "<br>";
         echo "Length : " . $match->Length() . "<br>";
         echo "Index  : " . $match->Index . "<br><hr>";
    }
</script>


وقد أرفقت هنا مثال لإستخدام المجموعة System.RegularExpressions
(لاحظ أن هذا الإطار يعمل مع الإصدار الخامس PHP5)

وأنا في أنتظار اي إستفسار في هذا الموضوع

أنتظروني قريبا مع الدرس القادم والمجموعة System.DateTime , والله الموفق
 
ملف مرفق(ملفات)
 
ملف مرفق  WebApplication3.rar (5.83كيلو )