[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 enlarge
لاحظ أن المجلد System.RegularExpressions يحتوي علي التالي
- الملف Match.php يحتوي علي الفئة Match
- الملف MatchCollection.php يحتوي علي الفئة MatchCollection
- الملف Regex.php يحتوي علي الفئة Regex
كيف يمكننا إستخدام هذه الفئات :
سوف ندرج في مجلد ال bin مجموعة ال System.RegularExpressions كما يلي
يمكننا إستخدام تلك الفئات من خلال عمل تضمين 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كيلو )