‎‎عبارات منظمPHP-‎Regular Expressions

Previous >    <Next  

‎يك عبارت منظم دنباله از كراكترهاست كه يگ الگوي جستجو را شكل ميدهد .هنگاميكه مي خواهيد ‎اطلاعاتي را در متني جستجو نمائيد، الكو(pattern) ‎براي آن تنظيم ميشود .از الگوي تنظيمي براي ‎جستجوي اطلاعات مورد نظر استفاده ميشود.

‎عبارت منظم ميتواند يك كراكتريا يك عبارت پيچيده تر باشد .اين عبارت براي عمليات جستجو و ‎جانشيني بكار گرفته ميشود.

‎‎فرمت كلي عبارت منظم(Syntax)

‎درPHP عبارت منظم تركيبي از علائم جداكننده واصلاح كننده اختياري ميباشند .بعنوان مثال نمونه ‎زير

$exp="/w3schools/i";

‎درمثال بالا كراكتر / ‎بعنوان جداكننده متنW3schools و كراكتر i ‎بعنوان اصلاح كننده، در نظر گرفته شده اند.

‎يك جداكننده‎(delimiter)‎ميتواندهر كراكتري بجز حروف ، اعداد، بك اسلش وبلنك باشد ‎عموما كراكتر‎/‎ ‎بيشتر بعنوان جدا كننده در نظر ميگيرند .اما ازكراكترهاي‎$‎ و ‎~‎‎هم ميتوان استفاده نمود.

‎‎توابع عبارت منظمRegular Expression Functions

‎توابع متعددي براي كا ركردن با عبارات منظم وجود دارد .در بين توابع preg_match_all() ، preg_match() preg_replace() ، ‎‎بيشتر كاربرد دارند . شرح مختصر مطابق جدول زير

تابع شرح مختصر
preg_match() در صورتيكه متن منظم در عبارت رشته اي وجود داشته باشد، عدد يك و در غير اينصورت‎ .عدد صفر را برگشت ميدهد‎
preg_match_all() .تعداد دفعاتيكه متن الگو در عبارت رشته اي وجود دارد، برگشت ميشود
preg_replace() .عمل جانشيني در عبارت رشته اي براي موارد مشابه الگو انجام شده و نتيجه بر گشت ميشود

‎‎تابعPHP-‎ Preg_match()‎

‎‎اين تابع براي كنترل وجود متني در يك عبارت رشته ايست.

‎مثال ـ در اين مثال عبارت‎"w3schools‎"‎در رشته‎"Visit W3shcools‎"‎جستجو ميشود .البته حروف ‎بزرگ وكوچك بخاطر‎i ‎درالگو،يكسان منظور ميشود

<?php 
$str = "Visit W3Schools";
$pattern = "/w3schools/i";
echo preg_match($pattern, $str); // Outputs 1
?> 

--(go to editor for change code and run)

‎‎تابعPHP-‎ preg_match_all()‎

‎‎اين تابع تعداد دفعاتي كه يك الگو در يك عبارت رشته وجود دارد بر ميگرداند.

‎مثال ـ در اين مثال در يك شمارش غيرحساس درحروف، تعداد دفعاتيكه متن‎"ain‎"‎در رشته زير وجود ‎دارد، برميگرداند.

"The rain in SPAIN falls mainly on the plains,"

<?php 
$str = "The rain in SPAIN falls mainly on the plains.";
$pattern = "/ain/i";
echo preg_match_all($pattern, $str); // Outputs 4
?> 

--(go to editor for change code and run)

‎‎تابعPHP-‎preg_replace()‎

‎‎تابع فوق بصورت كلي بفرم زير ميباشد.

preg_replace( pattern,str_rep,str_source)

‎اين تابع متن الگو يعنيpattern را درstr_source جستجو نموده وعبارتstr_rep را جانشين كرده ‎و نتيجه را برميگرداندstr_source.هيچ تغييري نميكند.

‎‎مثال ـ درعبارت‎"Visit Microsoft!‎"‎بجاي‎"microsoft‎"‎ عبارت‎"W3school‎"‎ قرار ميگيرد.

 <?php 
$str = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo preg_replace($pattern, "W3Schools", $str); // Outputs "Visit W3Schools!"
?> 

--(go to editor for change code and run)

‎‎اصلاح كننده هاRegular Expession Modifiers

‎اصلاح كننده هاي الگو باعث تغيير در رفتار تابع براي جستجوخواهد شد .اصلاح كننده ها مطابق زير ‎ميباشند.

‎‎i‎‎ـ براي غيرحساس بودن حروف.در چنين حالتي تفاوتي بين حروف كوچك وبزرگ نيست

m‎‎ـ جستجو در خطوط كامل متن را فعال ميكند .بصورت عادي جستجو در يك خط متن ‎ميباشد.

‎‎u‎‎ـ قادر ميسازد كه الگوي جستجو با UTF-‎8 تطبيق نمايد

‎‎الگوي براكتي درعبارت تنظيميRegular Expressons Patterns-‎

‎الگوي براكتي جستجو باعث مشخص شدن دامنه كراكترها در الگو، براي جستجو ميشود.جدول اين موارد ‎مطابق زيراست.

عبارت جستجو شرح
[abc] 1 حد اقل يك كراكتر درمتن پيداشود كه دربراكت باشد برگشت
[^abc]پيدا نمودن كراكتركه در براكت نباشد
[0-9]پيدانمودن يك عدد در متن

‎‎فراكراكترهاMetacharcters

‎كراكتر هاي خاصي هستند كه اگر در متن جستجو(pattern) ‎قرار گيرند، بعنوان نشانه كاري در روند جستجو مطرح ميكنند. ‎بعنوان مثال‎\d ‎ براي ‎‎مجموعه ارقام يعني0 تا9

‎‎جدول فراكراكتري ها مطابق زير است.

Metacharacters

Metacharacters are characters with a special meaning:

Metacharacter Description
| Find a match for any one of the patterns separated by | as in: cat|dog|fish
. Find just one instance of any character
^ Finds a match as the beginning of a string as in: ^Hello
$ Finds a match at the end of the string as in: World$
\d Find a digit
\s Find a whitespace character
\b Find a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b
\uxxxx Find the Unicode character specified by the hexadecimal number xxxx

Quantifiers

Quantifiers define quantities:

Quantifier Description
n+ Matches any string that contains at least one n
n* Matches any string that contains zero or more occurrences of n
n? Matches any string that contains zero or one occurrences of n
n{x} Matches any string that contains a sequence of X n's
n{x,y} Matches any string that contains a sequence of X to Y n's
n{x,} Matches any string that contains a sequence of at least X n's

‎نكته ـ اگر نياز به جستجوي كراكترهاي خاص داريد ، ميتوانيد با قرار دادن‎\ ‎ ‎قبل ازآن در الگوي جستجو، اينكار انجام دهيد. ‎بعنوان مثال براي پيدا كردن ?بايد الگو بصورتpattern=‎"/\+/?‎"‎باشد.

‎‎گروه بنديGrouping-‎

‎براي گروه بندي در الگواز‎( )‎ ‎استفاده ميشود و تكرار گروه در الگوبا ‎{ n}‎‎بدنبال گروه ذكر ميشودn . بعنوان ‎تعداد تكرار ميباشد .در اين مثال الكو بصورت ‎"/ba(na){2}/i‎"‎بوده كه مشابه‎‎"/banana/i‎"‎‎ميباشد

‎‎مثال ـ گروه بندي در الگو

 <?php 
$str = "Apples and bananas.";
$pattern = "/ba(na){2}/i";
echo preg_match($pattern, $str); // Outputs 1
?> 

--(go to editor for change code and run)


Previous >    <Next