بنام خداوند متعال♥️
اَفَض هستم با اموزش
عبارات با قائده در php👌
#قسمت_پنجم_ریجکس_نویسی
خب میخوایم با چندتا متاکارکتر جدید اشنا بشیم😄
{n} واحد قبلی فقط n بار میتونه تکرار بسه
{n,m} واحد قبلی حداقل n و حداکثر m بار میتونه تکرار بشه
الان میتونید یه ریجکس بنویسید که بعد کلمه setname یه واحد اسم حداقل ۴ و حداکثر 8 حرفی قبول کنه و بعد از پیدا کردن اکو کنه؟ خب بیاید بنویسیم😄
$string = 'setname mrafaz';
preg_match('/setname (.{4,8})/',$string,$match);
var_dump($match);
حالا خروجی $match میشه:
array(2) {
[0]=>
string(14) "setname mrafaz"
[1]=>
string(6) "mrafaz"
}
و اگر بخوایم mrafaz اکو کنیم باید بگیم
echo $match[1];
حالا چرا از * یا + استفاده نکردیم؟
چون نیازی نیست ما داریم میگیم رشتمون حداقل ۴ و حداکثر 8 بار تکرار میتونه بشه و چون متاکارکتر قبلیش نقطه بود به معنای هرچیزی هست👌
متاکارکتر بعدی که قراره یاد بگیریم [] هست که به این معنی یکی از عبارات داخلش میتونه باشه
[Aa] یعنی میتونه A یا a باشه
حالا بیاید یه ریجکس بنویسیم mrafaz مهم نباشه M اول بزرگ مینویسیم یا کوچیک ریجکسمون میشه:
/[Mm]rafaz/
یعنی مهم نیست m بزرگ بود یا کوچیک میتونه هم M باشه هم m
حالا اگر
/[Mpm]rafaz/
باشه درست حدس زدید ورودی میتونه prafaz هم باشه👌
حالا میخوایم
afaz .name
اینجا name میتونه هرچیزی باشه و ما میخوایم با . قبلش به عنوان یه واحد حساب کنیمش و بگیریمش چیکار میتونیم کنیم؟
/afaz (..*)/
اگر این ریجکسمون باشه و
afaz .mrhi
ورودیمون باشه ریجکس درسته؟
خیر درست نیست چون . یک متاکارکتر هست اگر بخوایم ازش به عنوان یه رشته استفاده کنیم باید یک بک اسلش \ پشتش بزاریم
/afaz (\..*)/
ریجکس بالا بخوایم معنی کنیم میشه
با afaz شروع بشه بعدش یک نقطه باشه و بعدش هرچیزی که خواست میتونه باشه و هرچقدر که خواست میتونه تکرار بشه
پس وقتی پشت یک متاکارکتر \ بک اسلش میزاریم به این معنی هست که به پترن میگیم این رو به عنوان متاکارکتر حساب نکن نیازش نداریم😅
♤@phpchallenge♤
اَفَض هستم با اموزش
عبارات با قائده در php👌
#قسمت_پنجم_ریجکس_نویسی
خب میخوایم با چندتا متاکارکتر جدید اشنا بشیم😄
{n} واحد قبلی فقط n بار میتونه تکرار بسه
{n,m} واحد قبلی حداقل n و حداکثر m بار میتونه تکرار بشه
الان میتونید یه ریجکس بنویسید که بعد کلمه setname یه واحد اسم حداقل ۴ و حداکثر 8 حرفی قبول کنه و بعد از پیدا کردن اکو کنه؟ خب بیاید بنویسیم😄
$string = 'setname mrafaz';
preg_match('/setname (.{4,8})/',$string,$match);
var_dump($match);
حالا خروجی $match میشه:
array(2) {
[0]=>
string(14) "setname mrafaz"
[1]=>
string(6) "mrafaz"
}
و اگر بخوایم mrafaz اکو کنیم باید بگیم
echo $match[1];
حالا چرا از * یا + استفاده نکردیم؟
چون نیازی نیست ما داریم میگیم رشتمون حداقل ۴ و حداکثر 8 بار تکرار میتونه بشه و چون متاکارکتر قبلیش نقطه بود به معنای هرچیزی هست👌
متاکارکتر بعدی که قراره یاد بگیریم [] هست که به این معنی یکی از عبارات داخلش میتونه باشه
[Aa] یعنی میتونه A یا a باشه
حالا بیاید یه ریجکس بنویسیم mrafaz مهم نباشه M اول بزرگ مینویسیم یا کوچیک ریجکسمون میشه:
/[Mm]rafaz/
یعنی مهم نیست m بزرگ بود یا کوچیک میتونه هم M باشه هم m
حالا اگر
/[Mpm]rafaz/
باشه درست حدس زدید ورودی میتونه prafaz هم باشه👌
حالا میخوایم
afaz .name
اینجا name میتونه هرچیزی باشه و ما میخوایم با . قبلش به عنوان یه واحد حساب کنیمش و بگیریمش چیکار میتونیم کنیم؟
/afaz (..*)/
اگر این ریجکسمون باشه و
afaz .mrhi
ورودیمون باشه ریجکس درسته؟
خیر درست نیست چون . یک متاکارکتر هست اگر بخوایم ازش به عنوان یه رشته استفاده کنیم باید یک بک اسلش \ پشتش بزاریم
/afaz (\..*)/
ریجکس بالا بخوایم معنی کنیم میشه
با afaz شروع بشه بعدش یک نقطه باشه و بعدش هرچیزی که خواست میتونه باشه و هرچقدر که خواست میتونه تکرار بشه
پس وقتی پشت یک متاکارکتر \ بک اسلش میزاریم به این معنی هست که به پترن میگیم این رو به عنوان متاکارکتر حساب نکن نیازش نداریم😅
♤@phpchallenge♤