نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی

عبارات منظم php عبارات با قاعده

) نمونه ای از استفاده از عبارات منظم برای یافتن قطعات خاصی از کد منبع صفحه را به شما نشان دادم. اکنون یاد می گیریم که چگونه آنها را خودتان بنویسید. این مهارت به شما کمک می کند بنویسید، متن را از قطعات غیر ضروری پاک کنید، قسمت های مناسب را در حجم زیاد متن جستجو کنید و غیره.

این موضوع نسبتاً پیچیده است، اما من سعی خواهم کرد به طور خلاصه مهمترین نکات را برجسته کنم. نمی دانم چگونه موفق خواهم شد، اما امیدوارم این درس مفید باشد.
بنابراین، بیایید با این واقعیت شروع کنیم که چندین توابع برای کار با عبارات منظم در PHP وجود دارد، اما از سه مورد بیشتر استفاده می شود:

  • preg_replace - جستجو و جایگزینی متنی که با عبارت معمولی مطابقت دارد.
  • preg_match - فقط جستجوی عبارت منظم.
  • preg_split - جستجو و تقسیم متن.

حداقل در درس های قبلی از آنها استفاده کردیم. یا بهتر است بگوییم، به جای preg_match، preg_match_all وجود داشت، اما این اساساً یکسان است، فقط دومی پس از اولین یافته، جستجو را قطع نمی کند. یعنی اگر از preg_match استفاده کنیم، تمام رخدادها را نمی‌یابیم، بلکه فقط اولین مورد را پیدا می‌کنیم.

انتخاب عملکرد برای استفاده در هر موقعیتی بسیار ساده است. ما باید جایگزین کنیم - ما از جایگزینی استفاده می کنیم، همانطور که در موردی که نیاز به حذف قسمت های غیر ضروری کد صفحه داشتیم، به یاد دارید؟

$page = preg_replace("/ ^]/i، ""، $page)؛ $page = preg_replace("/ ^]/i، ""، $page)؛ $page = str_replace(""، ""، $page);

اولین پارامتر تابع یک عبارت منظم است که مشخص می کند ما به دنبال چه چیزی هستیم. دوم چیزی است که ما آن را با آن جایگزین می کنیم. ثالثا - کجا دنبالش هستیم. بنابراین، در اینجا متغیر $page را گرفتیم و نتیجه تابع preg_replace را به آن اختصاص دادیم که در آن همه ورودی type=checkboxها و همچنین باز کردن و بستن برچسب‌ها را جستجو کردیم. ما آنها را با "" جایگزین کردیم، یعنی به سادگی آنها را حذف کردند. امیدوارم اینجا همه چیز روشن باشد. کمی بعد به تحلیل خود عبارت (پارامتر اول تابع) خواهیم پرداخت.
همچنین یک مثال با استفاده از preg_match_all وجود داشت که برای یافتن تمام پیوندها در متن باقی مانده مفید بود. ما در آن زمان به پیوندها نیاز داشتیم زیرا آنها حاوی کلمات کلیدی بودند که تجزیه کردیم. این چیزی است که اتفاق افتاد:

Preg_match_all("/ ]+?>(.*?)<\/a>/uis",$page,$ok)؛ برای ($j=0; $j ".$ok[$j].""; }

مجدداً، پارامتر اول یک عبارت منظم برای یافتن همه پیوندها است که البته در تگ "a" محصور شده است (اگر با نشانه گذاری html دوست نیستید، آن را بخوانید). دومی متغیری است که حاوی متنی است که جستجو می شود. پارامتر سوم متغیری است که نتیجه در آن قرار می گیرد - ok $. پس از آن، فقط باید تمام عناصر $ok لازم را مرور کنیم تا کلمات کلیدی مورد نیاز خود را بدست آوریم. به طور جداگانه، باید گفت که در خروجی یک آرایه چند بعدی دریافت می کنیم. به همین دلیل است که ما آن را به روش پیچیده ای خروجی می دهیم: $ok[$j]. برای دیدن ساختار یک آرایه از تابع زیر استفاده کنید و همه چیز را متوجه خواهید شد.

Print_r($ok)؛

در اینجا، به نظر می رسد، ما توابعی را که برای کار استفاده کردیم، کشف کردیم. اکنون فقط یاد می گیریم که چگونه همین عبارات منظم را بنویسیم که اولین پارامتر هر یک از این روش ها هستند. بیایید به مهمترین آنها برویم.

نحوه نوشتن عبارات منظم

ابتدا به ساختارهای اصلی نگاه می کنیم. عبارات گزینه هایی دارند. آنها با یک حرف مشخص می شوند و در انتها و قبل از یک اسلش نوشته می شوند.

علاوه بر این، متا کاراکترهای زیر پشتیبانی می شوند:

متاکاراکترها به نوبه خود می توانند اصلاح کننده هایی داشته باشند:

خوب، اکنون می توانیم به تحلیل عبارات منظم خود از درس گذشته بپردازیم. بر اساس جداول بالا، بیایید سعی کنیم آنچه را که داریم درک کنیم. این عبارت است:

/^]/i

اولین و آخرین اسلش "/" نشان می دهد که یک عبارت منظم در داخل آنها وجود دارد. در همان زمان، ما "i" را بعد از آخرین مورد قرار می دهیم، این یک گزینه است، مانند جدول اول - به حروف بزرگ و کوچک حساس نیست. داخل اسلش ها خود عبارت منظم وجود دارد. با یک علامت کمتر و یک تگ ورودی شروع می‌شود، و همه چیز بعد از آن تا زمانی که یک نقطه متنی ساده برای جستجو باشد. اما خود نقطه، و شخصیت های پس از آن - این در حال حاضر جالب تر است. در این مورد، ".*؟" به معنای هر دنباله ای از شخصیت ها است. یعنی اگر فقط متن و این ساخت را با هم ترکیب کنیم، تمام متن را بعد از اولین اتفاق و تا آخر انتخاب می کنیم. برای توقف، باید تگ پایانی html "بیشتر از" یا کاراکتر خط جدید را داشته باشید. این طرح فقط چنین فرصتی را به ما می دهد:

کاراکترهای داخل پرانتز، همانطور که بود، با یک OR منطقی به هم متصل می شوند. پایان یک علامت بزرگتر یا ابتدای رشته است.
این کل عبارت است، در آن شرط شروع، وسط و شرط پایان را تنظیم می کنیم. سخت نیست، درست است؟ در اینجا یک مثال برای روشن تر شدن آن وجود دارد:

بیایید یک چیز دیگر را تجزیه کنیم تا همه چیز روشن شود. ما به دنبال پیوندهایی به آنها گشتیم:

/]+?>(.*?)<\/a>/uis

بیان را خواندیم. باز هم ابتدا اسلش ها و گزینه ها را کنار می گذاریم. پرچم های "uis" خود توضیحی هستند، به استثنای "u" که توضیح ندادم - این نشان می دهد که ما از رمزگذاری یونیکد استفاده می کنیم. چیز زیادی باقی نمانده است شروع تگ "a" است که باز می شود، سپس کلاس می آید

که به معنی کم یا زیاد نیست (باز کردن و بستن تگ های html) یعنی هر کاراکتری در این مورد. یک "+?" به کلاس اضافه می شود، به این معنی که این کلاس 1 بار یا بیشتر (اما حداقل 1 بار مطمئنا) حضور خواهد داشت. و سپس تگ پایانی html برای تگ "a" می آید. در داخل لینک متنی وجود دارد که توسط گروه تنظیم شده است

پس از همه، ما نمی دانیم که متن در آنجا چیست، بنابراین چنین گروهی را تعریف می کنیم. و در پایان تگ پایانی "a":

توجه داشته باشید که ما از اسلش با یک بک اسلش فرار می کنیم تا شبیه متن ساده شود.

فوو موضوع واقعاً بسیار پیچیده است، به تمرین نیاز دارد. شاید من کاری را انجام می‌دهم که کاملاً بهینه نیست و شما می‌توانید عبارات منظم و صحیح دیگری بسازید، اما من به اندازه شما خودآموخته هستم، پس سخت قضاوت نکنید، بلکه گزینه‌های خود را در نظرات به اشتراک بگذارید. همچنین اگر چیزی مشخص نیست نظرات و صفحه تماس در خدمت شماست.

بیایید با چیستی یک عبارت منظم شروع کنیم. حالا به سوال من پاسخ دهید که آیا در کلمه "تست" "e" وجود دارد؟ "وجود دارد!" شما بگو. سپس سوال دوم را از شما می پرسم که چگونه حرف "ه" را در کلمه "تست" پیدا کردید؟ جواب واضح است، کاراکتر اول یعنی «ت» را می گیریم و با چیزی که به دنبالش هستیم، یعنی با «ه» مقایسه می کنیم. اگر مساوی نباشند، کاراکتر دوم یعنی «ه» را می گیریم، آن را با چیزی که به دنبالش هستیم، یعنی «ه» مقایسه می کنیم. وایلا! یک مسابقه پیدا کرد. پاسخ : در کلمه ی "تست" "ه" وجود دارد..

حالا یک سوال دیگر به من پاسخ دهید، عبارت منظم در این مثال کجاست؟ امیدوارم حدس زده باشید که عبارت منظم در اینجا همان چیزی است که ما در کلمه "تست" به دنبال آن هستیم. یعنی حرف «ه» در این مثال یک عبارت منظم است.

چرا از عبارات منظم در php استفاده کنیم؟ در تمرین من، از عبارات منظم استفاده شده است، به عنوان مثال، برای تعیین اینکه آیا یک آدرس ایمیل به خوبی شکل گرفته است. همچنین از چنین عباراتی برای تعیین صحت نام کاربری و رمز عبور استفاده می شود. با استفاده از عبارات منظم، می توانید آدرس را در پیوند پیدا کرده و آن را ذخیره کنید. کارهای زیادی که می‌توانید انجام دهید پس از تجزیه و تحلیل، می‌توانید عملکرد اصلی عبارات منظم و دو عبارات جانبی را شناسایی کنید. عملکرد اصلی، جستجوی مسابقات در یک رشته است. موارد جانبی ذخیره مسابقات یافت شده و جایگزینی هستند.

اولین عبارت منظم

در تئوری، ما می فهمیم که چگونه شخصیت "e" را در کلمه "تست" پیدا کنیم، چگونه این کار در عمل اجرا می شود؟ برای استفاده از عبارات منظم در php معمولاً از توابع زیر استفاده می شود:

preg_match("عبارت منظم (الگو)"، "متغیری که جستجو در آن انجام می شود"، "متغیری که نتیجه جستجو در آن ذخیره می شود (پارامتر اختیاری)"); - قابلیت تطبیق
preg_replace("عبارت منظم (الگوی)"، "مطابقت را با چه چیزی جایگزین کنیم"، "متغیر جایگزین"); - تعویض تابع

بیایید استفاده از این توابع را شروع کنیم. در اینجا یک مثال از جستجوی کاراکتر "e" در کلمه "test" آورده شده است:

$a = "تست";
if(preg_match("/e/",$a)) echo "پیدا شد!!";

کد شرایط را توصیف می کند، اگر چیزی مطابق با الگو در متغیر $a یافت شد، پیام "found!!" را نمایش دهید. همانطور که می بینید الگوی ما بین دو "/" است. در این مورد، کاراکتر "/" نماد آغاز و پایان الگوی ما است. امیدوارم این روشن باشد.

همه اینها البته جالب است ... اما این فقط الگوی ما است که بسیار ساده است، فکر نمی کنید؟ از این گذشته، به ندرت نیاز به یافتن یک کاراکتر در یک متغیر است. در بیشتر موارد، ما باید شخصیت های زیادی و همچنین ناشناخته ها را پیدا کنیم. چگونه بودن؟ بیایید برای خود مشکلی ایجاد کنیم و سعی کنیم آن را حل کنیم. فرض کنید رشته ای متشکل از اعداد و یک حرف انگلیسی مجهول داریم

چگونه این نامه را پیدا کنیم؟ هر حرفی از الفبای انگلیسی می تواند وجود داشته باشد، چگونه آن را تعیین کنیم؟ شما به سوال خود پاسخ دادید، هر حرفی وجود دارد، یعنی در محدوده a تا z است. محدوده ها را می توان در عبارات منظم استفاده کرد. اگر ندانیم به دنبال چه شخصیتی هستیم، اما مطمئن باشیم که این کاراکتر یک حرف از الفبای انگلیسی است، ورودی به صورت زیر خواهد بود:

$a = "123a321";
if(preg_match("//",$a)) echo "پیدا شد!!";

توجه داشته باشید که محدوده در پرانتزهای "[" "] محصور شده است. هر چیزی که در این پرانتزها قرار می گیرد به این صورت تعریف می شود یکیکاراکتر، در این مورد نویسه از a تا z متغیر است. اگر لازم باشد نه یک حرف، بلکه یک عدد پیدا کنیم، ورودی به این صورت خواهد بود:

$a = "abc1cba";
if(preg_match("//",$a)) echo "پیدا شد!!";

همچنین می خواهم توجه داشته باشم که عبارات منظم به حروف بزرگ و کوچک حساس هستند، بنابراین کاراکترهای "A" و "a" کاملاً متفاوت هستند، برای جستجوی آن و آن کاراکترها، آنها اینگونه می نویسند:

$a = "123a321";
if(preg_match("//",$a)) echo "پیدا شد!!";

همچنین جستجویی برای حروف روسی وجود دارد که به همان روش انگلیسی انجام می شود:

$a = "123y321";
if(preg_match("/[a-zA-Z]/",$a)) echo "پیدا شد!!";

متا شخصیت ها

ما یاد گرفته ایم که چگونه یک کاراکتر ناشناخته را در یک رشته جستجو کنیم. اگر باید چندین کاراکتر را پیدا کنیم چه کنیم؟ به اصطلاح متاکاراکترها به کمک می آیند... فرض کنید یک رشته با اعداد، حروف داریم، چگونه آن را در قالب توصیف کنیم؟ این امکان وجود دارد:

خط - 123a321
نمونه -

هوم... الگو واقعاً با رشته ما مطابقت دارد، و وقتی از نظر انطباق بررسی شود، آن چیزی است که مدتها انتظارش را می کشیدیم! اما فکر نمی کنید چه رکورد دست و پا گیر است؟

در اینجا نحوه کوتاه کردن آن آورده شده است:

خط - 123a321
نمونه - *

برای من خیلی کوتاه تر به نظر می رسد نماد "*" چیست؟ این همان متاکاراکتر است، به این معنی است که شخصیتی که توضیح دادیم (یعنی کاراکتری که می تواند شامل اعداد 0 تا 9 یا حروف الفبای انگلیسی از a تا z باشد) می تواند به طور نامحدود یا بیش از یک بار تکرار شود. بله بله! این متاکاراکتر در یک متغیر خالی مطابقت پیدا می کند، زیرا حتی عدم وجود شخصیتی که توضیح دادیم به درستی باز خواهد گشت! آن را به خاطر بسپار

چه متاکاراکترهای دیگری وجود دارد؟

به عنوان مثال، متاکاراکتر "+" تقریباً مشابه متاکاراکتر "*" با یک استثنا کوچک است. "*" حتی اگر هیچ کاراکتری وجود نداشته باشد، به درستی باز می گردد و "+" حداقل یک کاراکتر را بررسی می کند. یعنی اگر رشته مستلزم حضور باشد کمترینسپس از "+" به جای "*" استفاده کنید

متاکاراکتر "؟" نیز اغلب استفاده می شود. به این معنی که نباید بیش از یک کاراکتر جستجو در رشته وجود داشته باشد. اجازه دهید چند مثال برای دو متاکراکتر آخری که توضیح دادم به شما ارائه دهم.

فرض کنید باید رمز عبور کاربر را از نظر صحت بررسی کنیم. بیایید به این فکر کنیم که رمز عبور کاربر باید شامل چه چیزی باشد؟ خب، اولاً باید حداقل یک شخصیت باشد. ثانیا، باید فقط شامل اعداد و حروف الفبای انگلیسی باشد، بنابراین عبارت منظم مانند این خواهد بود:

$a = "qwerty12345";

به چه شخصیت هایی اجازه می دهیم؟ حروف انگلیسی هر مورد و اعداد. حالا سعی کنید به جای رمز عبور یک خط خالی بگذارید.

$a = "";
if(preg_match("/+/",$a)) echo "رمز عبور صحیح است";

پیام «رمز عبور صحیح» را نخواهید دید. چرا؟ زیرا متاکاراکتر "+" رشته را برای حداقل یک کاراکتر بررسی می کند.

و حالا یه ترفند کوچولو بیایید یه نگاهی به بیانمون بیندازیم، اجازه ندادیم، مثلا یک فاصله، درسته؟ در انتهای رمز عبور فاصله بگذارید و اجرا کنید

$a = "qwerty12345";
if(preg_match("/+/",$a)) echo "رمز عبور صحیح است";

و چرا پیام رمز صحیح خود را می بینیم؟ خیلی ساده است... تابع preg_match(); بررسی خود را در اولین مسابقه متوقف می کند. یعنی کاراکتر "q" با الگویی که توضیح دادیم مطابقت دارد و بقیه چیزها دیگر برای تابع مهم نیست چه باید کرد؟ در اینجا نحوه رفع آن آمده است:

$a = "qwerty12345";
if(preg_match("/^+$/",$a)) echo "رمز عبور صحیح است";

با افزودن "^" در ابتدای عبارت و "$" در پایان، به تابع می گوییم که الگو باید مطابقت داشته باشد. همهخط اگر این کد را اجرا کنید، پیام را نخواهید دید، زیرا یک کاراکتر نامعتبر در انتهای رمز عبور وجود دارد - یک فاصله

حالا متاکاراکتر «+» را به متاکاراکتر «؟» تغییر دهید. فکر می کنید چه اتفاقی می افتد؟ به درستی، هیچ پیامی در مورد صحت رمز عبور وجود نخواهد داشت، زیرا رمز عبور حاوی بیش از یک کاراکتر است. امیدوارم کار این سه متاکاراکتر پرکاربرد را به درستی توضیح داده باشم

گاهی اوقات "نه" بهتر است

ما حداقل یاد گرفتیم که چگونه صحت رمز عبور را بررسی کنیم و این خوب است! اجازه دهید در مورد روش دیگری برای جستجوی چیزی در یک رشته به شما بگویم. فرض کنید باید عدم وجود اعداد در رشته را بررسی کنیم. چگونه انجامش بدهیم؟ این خط است:

(من عمداً این شخصیت های "-_+()" را وارد آن کردم تا زندگی مانند عسل نباشد ...) می توانیم عبارت زیر را بنویسیم:

اما باید اعتراف کنید، زیرا ما همیشه نمی دانیم که چه کاراکترهایی در یک رشته استفاده می شود، اما مطمئناً می دانیم که نباید اعداد در آن وجود داشته باشد! منطقی تر است که فقط الگویی بنویسیم که خطوطی را که در آن وجود دارد رد شود خیرارقام، نه آنهایی که در آن وای خدای من چقدر شخصیت نامفهوم!!!. در اینجا یک مثال از یک عبارت درست ترکیب شده برای چنین وظایفی آورده شده است:

$a = "a-_+()";
if(preg_match("/^[^0-9]+$/",$a)) echo "بدون رقم!";

چگونه به این امر رسیدیم؟ نماد را وارد کرده ایم ولی!دنباله "^" ([^0-9]) در ابتدا نشان می دهد که این کاراکتر در رشته خواهد بود. نبایدامیدوارم این موضوع حل شود

خب بیایید آروم گرد کنیم... دو مثال با توضیحات میزنم که طی اونها یاد میگیریم نتیجه جستجو رو در متغیر ذخیره کنیم و صحت آدرس ایمیل رو چک کنیم.

دیدمش ذخیره کردم!

وبلاگ من

$a = " وبلاگ من";
preg_match("/ /" $a)؛

در عبارت معمولی خود، تمام کاراکترهای احتمالی را که می توان در پیوند گنجانده شود، شرح داده ایم. من همچنین می خواهم به شخصیت های نقل قول و "/" در بیان ما توجه کنم.. قبل از آنها یک بک اسلش وجود دارد، برای چیست؟ موضوع این است که "/" و یک نقل قول در خود کاراکترهای خاص است. و برای اینکه الگو آنها را به عنوان شخصیت های معمولی درک کند، باید آنها را نمایش دهیم. غربالگری با اضافه کردن یک بک اسلش قبل از کاراکترهای ویژه انجام می شود. امیدوارم واضح باشه

$a = " وبلاگ من";
preg_match("/ /" $a، $b)؛

خوب، بر این اساس، لازم است یک پارامتر اضافی در قالب یک متغیر $b اضافه کنید، پیوند یافت شده در آن ذخیره می شود. همچنین باید بدانید که نتیجه جستجو در یک آرایه قرار می گیرد. بنابراین متغیر $b یک آرایه است. اطلاعاتی که ما به دنبال آن هستیم در شاخص 1 قرار دارد. این به این معنی است که نتیجه جستجو در متغیر $b است. بیایید نتیجه را روی صفحه نمایش دهیم:

$a = " وبلاگ من";
preg_match("/ /" $a، $b)؛
echo $b;

آدرس درست رمز موفقیت است!

و در نهایت پاسخ به این سوال که آیا ایمیل صحیح است؟ ابتدا باید بدانید چه شخصیت هایی در آدرس ها مجاز هستند؟ تا آنجا که من می دانم، شخصیت های مجاز عبارتند از:

  • حروف انگلیسی، اعداد، "_"، "-" اممم، همه چیز به نظر می رسد ... ما از این کار خواهیم کرد.
  • بعد ما "@" داریم
  • بعد، حروف انگلیسی
  • بعد، نقطه
  • و باز هم حروف انگلیسی...

بنابراین عبارت منظم این خواهد بود:

$a = " [ایمیل محافظت شده]";
if(preg_match("/^ [ایمیل محافظت شده]+.+$/، $a)) echo "آدرس ایمیل درست است!";
else echo "آدرس ایمیل صحیح نیست!";

خوب ... امیدوارم که چنین رکوردهایی اکنون شما را نترسانند و کاملاً بتوانید آنها را درک کنید.

در آخر می خواهم چیزی بگویم. این مقاله دست و پا گیر بود و در عین حال تنها بخشی از احتمالات را پوشش داد. اگر در حال خواندن این جمله هستید، به احتمال زیاد آن را تا انتها خوانده اید، که از این بابت بسیار سپاسگزاریم

در مورد سری مقالات توسعه وبلاگ های cms، قسمت اول چرخه اعلام بسته شدندر آینده ای نزدیک پیاده سازی پنل مدیریت را آغاز خواهیم کرد، بنابراین اگر سوالی دارید، خوشحال می شوم که پاسخ دهم. بهترین ها برای شما، من همه چیز دارم!

عبارات منظم الگوهای خاصی برای جستجوی زیر رشته در متن هستند. با کمک آنها می توانید چنین مشکلاتی را در یک خط حل کنید: "بررسی کنید که آیا رشته دارای اعداد است" ، "همه آدرس های ایمیل را در متن پیدا کنید" ، "چند علامت سوال متوالی را با یک جایگزین کنید".

بیایید با یک حکمت برنامه نویسی محبوب شروع کنیم:

برخی از افراد وقتی با مشکلی روبرو می شوند، فکر می کنند: "آره، من باهوش هستم، آن را با عبارات منظم حل می کنم." الآن آن ها دو مشکل دارند.

نمونه های قالب

بیایید با چند مثال ساده شروع کنیم. اولین عبارت در تصویر زیر به دنبال دنباله ای از 3 حرف است، که در آن حرف اول "k" است، دومی هر حرف روسی است، و سومین عبارت "t" به روشی غیر حساس است (به عنوان مثال، "kot" یا "CAT" با این الگو مطابقت دارد). عبارت دوم متن را برای مدتی در قالب 12:34 جستجو می کند.

هر عبارتی با یک کاراکتر جداکننده (جداکننده در انگلیسی) شروع می شود. کاراکتر / معمولاً به عنوان آن استفاده می شود، اما از کاراکترهای دیگری که در عبارات منظم هدف خاصی ندارند، مانند ~، # یا @ می توان استفاده کرد. اگر کاراکتر / بتواند در عبارت وجود داشته باشد از جداکننده های جایگزین استفاده می شود. سپس الگوی رشته مورد نظر ما می آید و به دنبال آن جداکننده دوم قرار می گیرد و یک یا چند حرف پرچم می توانند در انتها قرار گیرند. آنها هنگام جستجوی متن گزینه های اضافی را تنظیم می کنند. در اینجا نمونه هایی از پرچم ها وجود دارد:

  • i - می گوید که جستجو باید به حروف بزرگ و کوچک حساس باشد (به طور پیش فرض به حروف بزرگ حساس است)
  • u - می گوید که عبارت و متنی که جستجو می شود از رمزگذاری utf-8 استفاده می کند، نه فقط از حروف لاتین. بدون آن، جستجوی نویسه‌های روسی (و سایر نویسه‌های غیر لاتین) ممکن است به درستی کار نکند، بنابراین همیشه باید آن را قرار دهید.

خود قالب از کاراکترهای منظم و طرح های خاص تشکیل شده است. خوب، برای مثال، حرف "k" در عبارات منظم به معنای خودش است، اما نمادها به معنای "هر عددی از 0 تا 5 می تواند در این مکان باشد." در اینجا لیست کاملی از کاراکترهای خاص وجود دارد (در کتابچه راهنمای php به آنها متاکاراکتر گفته می شود) و همه کاراکترهای دیگر در عبارت منظم معمولی هستند:

در زیر معنای هر یک از این کاراکترها را تجزیه و تحلیل خواهیم کرد (و همچنین توضیح می دهیم که چرا حرف "ё" به طور جداگانه در عبارت اول قرار گرفته است)، اما در حال حاضر سعی می کنیم عبارات منظم خود را در متن اعمال کنیم و ببینیم چه اتفاقی می افتد. PHP دارای یک تابع خاص preg_match ($regexp، $text، $match) است که یک عبارت منظم، متن و یک آرایه خالی را به عنوان ورودی می گیرد. بررسی می‌کند که آیا متن دارای زیررشته‌ای است که با الگوی داده‌شده مطابقت دارد یا خیر و اگر نه، ۰ یا اگر وجود دارد ۱ را برمی‌گرداند. و در آرایه پاس شده، اولین تطابق یافت شده با عبارت منظم در عنصر با اندیس 0 قرار می گیرد. بیایید یک برنامه ساده بنویسیم که عبارات منظم را برای رشته های مختلف اعمال کند:

اکنون که مثال را دیدیم، اجازه دهید عبارات منظم را با جزئیات بیشتری بررسی کنیم.

پرانتز در عبارات منظم

بیایید معنای انواع مختلف براکت ها را دوباره مرور کنیم:

  • پرانتزهای فرفری a(1,5) تعداد تکرارهای کاراکتر قبلی را مشخص می‌کنند - در این مثال، عبارت به دنبال 1 تا 5 حرف متوالی "a" است.
  • پرانتز مربع به معنای "هر یک از این کاراکترها" است، در این مورد، حروف a، b، c، x، y، z یا یک عدد از 0 تا 5 است. در داخل کروشه، سایر کاراکترهای خاص مانند | یا * - آنها یک کاراکتر منظم را نشان می دهند. اگر در ابتدا یک کاراکتر ^ در پرانتز وجود داشته باشد، معنی معکوس می شود: "هر یک از نویسه ها، به جز موارد نشان داده شده" - برای مثال، [^ac] به معنای "هر یک کاراکتر، به جز a، b یا c" است. .
  • پرانتز کاراکترها و عبارات را گروه بندی کنید. برای مثال در عبارت abc+ علامت مثبت فقط به حرف c اشاره دارد و این عبارت به دنبال کلماتی مانند abc, abcc, abccc می گردد. و اگر پرانتز a (bc) + قرار دهید، کمیت بعلاوه قبلاً به دنباله bc اشاره دارد و عبارت به دنبال کلمات abc، abcbc، abcbcbc می‌گردد.

توجه: محدوده کاراکترها را می توان در پرانتز مشخص کرد، اما به یاد داشته باشید که حرف روسی ё جدا از الفبا است و برای نوشتن "هر حرف روسی" باید بنویسید [а-яё].

bexleshi

اگر به آموزش های دیگر در مورد عبارات منظم نگاه کرده باشید، احتمالا متوجه شده اید که بک اسلش در همه جا متفاوت نوشته می شود. در جایی یک بک اسلش می نویسند: \d اما اینجا در مثال ها 2 بار تکرار می شود: \\d . چرا؟

زبان عبارت منظم از شما می خواهد که یک بار اسلش را بنویسید. با این حال، در رشته های تک و دو نقل قول در PHP، بک اسلش نیز معنای خاصی دارد: کتابچه راهنمای رشته ها. خوب، برای مثال، اگر بنویسید $x = "\$"; سپس PHP آن را به عنوان یک ترکیب خاص می گیرد و فقط کاراکتر $ را در رشته وارد می کند (و موتور regex از بک اسلش قبل از آن اطلاعی نخواهد داشت). برای وارد کردن دنباله \$ در یک رشته، باید بک اسلش را دو برابر کنیم و کد را به صورت $x = "\\$" بنویسیم. .

به همین دلیل، در برخی موارد (جایی که دنباله ای از کاراکترها در PHP معنای خاصی دارند) باید بک اسلش را دو برابر کنیم:

  • برای نوشتن در عبارت منظم \$، در کد "\\$" می نویسیم.
  • برای نوشتن \\ در عبارت منظم، هر بک اسلش را دو برابر می کنیم و "\\\\" را می نویسیم.
  • برای نوشتن یک بک اسلش و یک عدد (\1) در یک عبارت منظم، اسلش باید دو برابر شود: "\\1"

در موارد دیگر، یک یا دو اسلش معکوس نتیجه یکسانی را نشان می دهد: "\\d" و "\d" یک جفت کاراکتر \d را در رشته وارد می کنند - در حالت اول، 2 اسلش معکوس دنباله ای برای درج یک اسلش است. ، در حالت دوم دنباله خاصی وجود ندارد و کاراکترها همانطور که هستند درج می شوند. با استفاده از echo می توانید بررسی کنید که چه کاراکترهایی در رشته درج خواهند شد و موتور عبارت معمولی چه چیزی را می بیند: echo "\$"; . بله، سخت است، اما چه کاری می توانید انجام دهید؟

ساختارهای خاص در عبارات منظم

  • \d به دنبال هر رقمی است، \D - هر کاراکتری غیر از یک رقم
  • \w با هر حرف واحد (هر حروف الفبا)، رقم یا زیرخط _ مطابقت دارد. \W با هر کاراکتری به جز حرف، عدد، خط زیر مطابقت دارد.

همچنین، یک شرط مناسب برای اشاره به مرز کلمه وجود دارد: \b. این ساختار به این معنی است که در یک طرف آن باید یک کاراکتر وجود داشته باشد که یک حرف / عدد / خط زیر (\w) است و در طرف دیگر - نه. خوب، مثلاً می خواهیم کلمه «گربه» را در متن پیدا کنیم. اگر عبارت منظم /cat/ui را بنویسیم، دنباله این حروف را در هر جایی پیدا می کند - مثلاً در داخل کلمه "جانور". واضح است که این چیزی نیست که ما می خواستیم. اگر یک شرط مرزی کلمه را به عبارت منظم اضافه کنیم: /\bcat\b/ui، اکنون فقط کلمه جداگانه "cat" جستجو می شود.

کتابچه راهنمای

  • سینتکس عبارات منظم در PHP، توضیحات مفصل

هنگام کار با متون در هر زبان برنامه نویسی مدرن، توسعه دهندگان دائماً با وظایف بررسی داده های وارد شده برای مطابقت با الگوی مورد نظر، یافتن و جایگزینی قطعات آزمایشی و سایر عملیات معمولی برای پردازش اطلاعات نمادین روبرو هستند. توسعه الگوریتم های تأیید خود منجر به اتلاف زمان، ناسازگاری کد برنامه و پیچیدگی در توسعه و نوسازی آن می شود.

توسعه سریع اینترنت و زبان های توسعه وب مستلزم ایجاد ابزارهای جهانی و فشرده برای پردازش اطلاعات متنی با حداقل مقدار کد مورد نیاز برای این کار است. زبان PHP که در میان مبتدیان و توسعه دهندگان حرفه ای محبوب است، از این قاعده مستثنی نیست. عبارت منظم به عنوان یک زبان الگوی متن به شما امکان می دهد وظایف پردازش متن را ساده کنید و کد برنامه را ده ها و صدها خط کاهش دهید. بسیاری از کارها به طور کلی بدون آن غیر ممکن است.

عبارات منظم در PHP

زبان PHP شامل سه مکانیسم برای کار با عبارات منظم است - "ereg"، "mb_ereg" و "preg". متداول ترین رابط کاربری "preg" است که توابع آن دسترسی به کتابخانه پشتیبانی از عبارت منظم PCRE را فراهم می کند، که در اصل برای زبان Perl توسعه یافته است، که همراه با PHP است. توابع Preg مطابق با یک الگوی خاص در زبان عبارت معمولی به دنبال موارد منطبق در یک رشته متن معین می گردند.

مبانی نحو

در چارچوب یک مقاله کوتاه، توصیف دقیق کل نحو عبارات منظم غیرممکن است؛ ادبیات خاصی برای این کار وجود دارد. ما فقط عناصر اصلی را برای نشان دادن امکانات گسترده برای توسعه دهنده و درک نمونه های کد ارائه می دهیم.

B به طور رسمی بسیار دشوار تعریف شده است، و بنابراین ما شرح را ساده می کنیم. عبارت منظم یک رشته متنی است. این شامل یک الگوی محدود و یک اصلاح کننده است که نحوه پردازش آن را نشان می دهد. امکان گنجاندن جایگزین ها و تکرارهای مختلف در قالب ها وجود دارد.

مثلاً در بیان /\d(3)-\d(2)-\d(2)/mجداکننده خواهد بود «/» ، به دنبال آن الگو و نماد "م"اصلاح کننده خواهد بود.

قدرت کامل عبارات منظم با متاکراکترها کدگذاری می شود. متاکاراکتر اصلی زبان، بک اسلش - "\" است. نوع شخصیتی را که از آن پیروی می کند معکوس می کند (یعنی یک کاراکتر معمولی تبدیل به یک متاکاراکتر می شود و بالعکس). یکی دیگر از متاکاراکترهای مهم اسلش «|» است که الگوهای جایگزین را مشخص می کند. نمونه های بیشتری از متاکاراکترها:

PHP، هنگام پردازش عبارات منظم، یک فضا را به عنوان یک کاراکتر مهم جداگانه در نظر می گیرد، بنابراین عبارات ABCWHERE و ABCWHERE متفاوت هستند.

الگوهای فرعی

در PHP، الگوهای فرعی معمولی با پرانتز متمایز می شوند و گاهی اوقات به آنها "زیرعبارت" می گویند. توابع زیر را انجام دهید:

    انتخاب گزینه های جایگزین. مثلا قالب گرما (بعضی|پرنده|)با کلمات مطابقت دارد "گرما"، "پرنده آتشین"و "کباب". و بدون براکت، فقط یک رشته خالی، "پرنده" و "گرم" خواهد بود.

    الگوی فرعی "هیجان انگیز".این به این معنی است که اگر یک رشته فرعی در الگو مطابقت داشته باشد، در نتیجه همه موارد منطبق برگردانده می شوند. برای وضوح، بیایید مثالی بزنیم. با توجه به عبارت منظم زیر: برنده دریافت می کند ((طلا|طلا)(مدال|کاپ)) -و یک رشته برای جستجوی موارد منطبق: "برنده مدال طلا می گیرد". علاوه بر عبارت اصلی، جستجو به موارد زیر منجر می شود: "مدال طلا", "مدال"، "طلا".

عملگرهای تکرار (کوادیفایر)

هنگام کامپایل عبارات منظم، اغلب لازم است که تکرار اعداد و کاراکترها را تجزیه و تحلیل کنید. اگر تکرارها زیاد نباشد، مشکلی نیست. اما وقتی تعداد دقیق آنها را نمی دانیم چه کنیم؟ در این حالت باید از متاکاراکترهای خاص استفاده شود.

برای توصیف تکرارها، از quadrifiers استفاده می شود - متا کاراکترها برای تنظیم کمیت. Quadifiers دو نوع هستند:

  • کلی، محصور در پرانتز؛
  • به اختصار

کمیت کننده عمومی حداقل و حداکثر تعداد تکرار مجاز عنصر را به صورت دو عدد در پرانتزهای فرفری مشخص می کند، مانند x(2.5). اگر حداکثر تعداد تکرار ناشناخته باشد، آرگومان دوم حذف می شود: x(2،).

کمیت کننده های مخفف نمادهایی برای رایج ترین تکرارها هستند تا از بارگذاری بیش از حد نحو جلوگیری شود. معمولاً از سه علامت اختصاری استفاده می شود:

1. * - صفر یا بیشتر تکرار، که معادل (0،) است.

2. + - یک یا چند تکرار، به عنوان مثال،).

3.؟ - صفر یا فقط یک تکرار - (0.1).

مثال های بیان منظم

برای کسانی که در حال یادگیری عبارات منظم هستند، نمونه ها بهترین آموزش هستند. در اینجا چند مورد وجود دارد که با حداقل تلاش پتانسیل عالی خود را نشان می دهند. همه کدهای برنامه نویسی با نسخه های PHP 4.x و بالاتر سازگاری کامل دارند. برای درک کامل نحو و استفاده از تمامی ویژگی های زبان، کتاب Regular Expressions اثر J. Friedl را توصیه می کنیم که در آن نحو به طور کامل پوشش داده شده است و نمونه هایی از عبارات منظم نه تنها در PHP، بلکه برای Python نیز وجود دارد. پرل، MySQL، جاوا، روبی و سی شارپ.

بررسی صحت آدرس ایمیل

وظیفه.یک صفحه وب وجود دارد که از بازدیدکننده آدرس ایمیل می خواهد. عبارت منظم باید قبل از ارسال پیام ها، درستی آدرس دریافتی را بررسی کند. چک تضمین نمی کند که صندوق پستی مشخص شده واقعا وجود دارد و نامه ها را می پذیرد. اما او می تواند آدرس های عمدا اشتباه را حذف کند.

راه حل.مانند هر زبان برنامه نویسی، عبارات منظم اعتبارسنجی آدرس ایمیل را می توان به روش های مختلف در PHP پیاده سازی کرد و نمونه های این مقاله به عنوان آخرین و تنها گزینه در نظر گرفته نشده است. بنابراین، در هر مورد، ما لیستی از الزاماتی را ارائه می دهیم که باید در هنگام برنامه نویسی در نظر گرفته شوند و پیاده سازی خاص کاملاً به توسعه دهنده بستگی دارد.

بنابراین، عبارتی که اعتبار ایمیل را بررسی می کند باید شرایط زیر را بررسی کند:

  1. وجود علامت @ در رشته منبع و عدم وجود فاصله.
  2. قسمت دامنه آدرس، بعد از علامت @، فقط شامل کاراکترهای معتبر برای نام دامنه است. همین امر در مورد نام کاربری نیز صدق می کند.
  3. هنگام تأیید یک نام کاربری، لازم است وجود کاراکترهای خاص را شناسایی کنید، مانند آپوستروف یا چنین کاراکترهایی بالقوه خطرناک هستند و می توانند در حملاتی مانند تزریق SQL قرار گیرند. از چنین آدرس هایی خودداری کنید.
  4. نام کاربری فقط یک نقطه را مجاز می‌کند، که نمی‌تواند اولین یا آخرین کاراکتر در یک رشته باشد.
  5. نام دامنه باید دارای حداقل دو و حداکثر شش کاراکتر باشد.

نمونه ای که تمام این شرایط را در نظر می گیرد در شکل زیر قابل مشاهده است.

اعتبار سنجی URL ها

وظیفه.بررسی کنید که آیا یک رشته متن داده شده معتبر است یا خیر.

راه حل.نسخه نهایی ما به این صورت است:

/^(https?:\/\/)?([\da-z\.-]+)\.((2,6))([\/\w \.-]*)*\/?$ /

اکنون اجازه دهید اجزای آن را با استفاده از شکل با جزئیات بیشتری تجزیه و تحلیل کنیم.

بررسی شماره کارت اعتباری

وظیفه.لازم است تأیید صحت شماره کارت پلاستیکی وارد شده در رایج ترین سیستم های پرداخت انجام شود. گزینه فقط نقشه در نظر گرفته شده است

راه حل.هنگام ایجاد یک عبارت، لازم است که وجود فاصله های احتمالی در عدد وارد شده را در نظر بگیرید. ارقام شماره روی کارت برای خواندن و دیکته راحت تر به گروه هایی تقسیم می شوند. بنابراین، طبیعی است که شخصی سعی کند عددی را به این روش (یعنی با استفاده از فاصله) وارد کند.

نوشتن یک عبارت عمومی که فضاها و خط تیره‌های احتمالی را در نظر می‌گیرد، دشوارتر از کنار گذاشتن همه کاراکترها به جز اعداد است. بنابراین توصیه می شود از متاکاراکتر /D در عبارت استفاده کنید که تمام کاراکترها به جز ارقام را حذف می کند.

اکنون می توانید مستقیماً به بررسی شماره بروید. همه شرکت های کارت اعتباری از قالب شماره منحصر به فرد استفاده می کنند. مثال از این استفاده می کند و مشتری نیازی به وارد کردن نام شرکت ندارد - این با شماره تعیین می شود. ویزا کارت ها همیشه با 4 شروع می شوند و 13 یا 16 رقمی هستند. MasterCard در محدوده 51-55 با طول عدد 16 شروع می شود. در نتیجه، عبارت زیر را دریافت می کنیم:

قبل از پردازش سفارش، می توانید آخرین رقم شماره را که با استفاده از الگوریتم Luhn محاسبه می شود، بررسی کنید.

بررسی شماره تلفن

وظیفه.بررسی صحت شماره تلفن وارد شده

راه حل.تعداد ارقام در شماره تلفن ثابت و تلفن همراه از کشوری به کشور دیگر به طور قابل توجهی متفاوت است، بنابراین نمی توان به طور کلی یک شماره تلفن را با استفاده از عبارات منظم تأیید کرد. اما اعداد بین المللی فرمت دقیقی دارند و برای بررسی الگوی عالی هستند. علاوه بر این، اپراتورهای تلفن ملی بیشتر و بیشتر در تلاش هستند تا از یک استاندارد واحد پیروی کنند. ساختار شماره به شرح زیر است:

+CCC.NNNNNNNNNNxEEEE،جایی که:

C یک کد کشور 1-3 رقمی است.

N - تعداد تا 14 رقم.

E یک پسوند اختیاری است.

علامت مثبت یک عنصر ضروری است و علامت x فقط زمانی وجود دارد که به پسوند نیاز باشد.

در نتیجه عبارت زیر را داریم:

^\+(1,3)\.(4,14)(?:x.+)?$

اعداد در یک محدوده

وظیفه.لازم است اطمینان حاصل شود که یک عدد صحیح از یک محدوده خاص مطابقت دارد. علاوه بر این، لازم است که عبارات منظم فقط اعداد را از طیفی از مقادیر بیابند.

راه حل. در اینجا برخی از عبارات برای برخی از رایج ترین موارد وجود دارد:

جستجوی آدرس IP

وظیفه.باید تعیین کنید که آیا رشته داده شده یک آدرس IP معتبر در قالب IPv4 در محدوده 000.000.000.000-255.255.255.255 است یا خیر.

راه حل.مانند هر کار PHP، یک عبارت منظم دارای تغییرات زیادی است. به عنوان مثال، این:

بررسی آنلاین عبارات

بررسی صحت عبارات منظم می تواند برای برنامه نویسان تازه کار به دلیل پیچیدگی نحو، که با زبان های برنامه نویسی "عادی" متفاوت است، دشوار باشد. برای حل این مشکل، تست‌کننده‌های بیان آنلاین زیادی وجود دارند که بررسی درستی الگوی ایجاد شده روی متن واقعی را آسان می‌کنند. برنامه نویس یک عبارت و داده را برای تأیید وارد می کند و فوراً نتیجه پردازش را می بیند. معمولاً یک بخش مرجع نیز وجود دارد که عبارات منظم، مثال‌ها و تفاوت‌های پیاده‌سازی رایج‌ترین زبان‌های برنامه‌نویسی را با جزئیات شرح می‌دهد.

اما اعتماد کامل به نتایج خدمات آنلاین برای همه توسعه دهندگانی که از PHP استفاده می کنند توصیه نمی شود. یک عبارت منظم نوشته شده و شخصاً آزمایش شده مهارت ها را بهبود می بخشد و تضمین می کند که هیچ خطایی وجود ندارد.

عبارات منظم یک ابزار پردازش رشته بسیار قدرتمند، اما در عین حال دشوار است. نکات اصلی را شرح خواهم داد. یک عبارت منظم یک الگوی رشته ای است. با توجه به این الگو، می توانید به جستجوی رخدادها، جایگزینی، بررسی انطباق با الگو بپردازید.

قوانین طراحی یک الگو (الگو)

مرزهای الگو باید با کاراکترهای خاصی مشخص شوند، اغلب با استفاده از " / "، اما من ترجیح می دهم استفاده کنم" # زیرا فراوانی اسلش های جلو و عقب می تواند در چشم شارژ شود و معمولاً از "شبکه ها" در هیچ جای دیگری استفاده نمی شود. بنابراین: " #HereRegularExpressionBody#"

پرانتزها در داخل عبارت منظم استفاده می شوند - اینها عبارت های فرعی هستند که می توانند دستکاری شوند، به عنوان مثال:

#^/catalog/(+)/(+)\.html.*#

این عبارت برای دریافت پارامترها در یک رشته در نظر گرفته شده است URL. در ابتدای خط یک شخصیت خاص وجود دارد " ^ "- این به معنای ابتدای خط است. بعد می آید" /کاتالوگ/" - اینجا هیچ کاراکتر خاصی وجود ندارد، فقط متنی است که باید در خط باشد. سپس پرانتزها را ملاقات کردیم، یعنی به اولین عبارت فرعی رسیدیم. براکت های مربع مجموعه ای از کاراکترهایی را نشان می دهد که می توانند در خط باشند. این مکان. امضا کنید " - "یعنی شمارش. علامت" \ " از کاراکترهای خاص فرار می کند. بنابراین، در اولین عبارت فرعی می توانیم حروف LARGE و کوچک الفبای لاتین، اعداد از 0 تا 9، خط زیر، یک خط تیره و یک نقطه را داشته باشیم. یک خط تیره و یک نقطه کاراکترهای خاصی هستند، اما در اینجا آنها فرار کرده اند، بنابراین اینجا فقط کاراکترها هستند. بعد از براکت ها علامت "" می آید. + " - این بدان معنی است که کاراکتر قبلی (و ما این مجموعه از کاراکترها را در براکت های مربع داریم) می تواند 1 بار یا بیشتر برود. سپس می آید " / "فقط یک کاراکتر است، و یک عبارت فرعی مشابه. سپس می آید" \.html"که به معنای متن است" .html". و سپس شخصیت های خاص" .* "نقطه به معنای هر کاراکتر و ستاره هر عدد از کاراکتر قبلی است. یعنی بعد از" .html"هر چیزی ممکن است برود.

تعیین کمیت، کمیت کننده ها

در بالا، قبلاً چنین نمادهایی را در نظر گرفته ایم که نشان دهنده تعداد نمادهای قبلی است، مانند + و * . در اینجا تمام احتمالات برای تعیین مقدار وجود دارد:

شخصیت های خاص

برای برخی از گروه های شخصیت اختصارات خاصی وجود دارد:

"طمع"

مفهوم طمع بیان منظم را در نظر بگیرید. به عنوان مثال یک خط وجود دارد:

#()#

خواندن: عبارت فرعی:

به نظر می رسد همه چیز درست است، عبارت فرعی در زیر قرار می گیرد:

اما همچنین مناسب است:

ما آن را دریافت خواهیم کرد، زیرا. عبارات منظم به طور پیش فرض "طمع" هستند. شما می توانید طمع را با اصلاح کننده حذف کنید " U"، مثل این:

#() #U

اصلاح کننده ها

عبارات منظم را می توان با اصلاح کننده ها دنبال کرد: " #HereRegularExpressionBody#HereModifiers"انواع اصلاح کننده:

من حالت حساس به حروف کوچک و بزرگ را فعال می کند، به عنوان مثال. حروف بزرگ و کوچک در عبارت تفاوتی ندارند.
متر نشان می دهد که متن مورد جستجو باید به عنوان چندین خط در نظر گرفته شود. به‌طور پیش‌فرض، موتور عبارت منظم، متن را بدون توجه به اینکه واقعاً چیست، به‌عنوان یک خط واحد در نظر می‌گیرد. بر این اساس، فراکاراکترها "^" و "$"ابتدا و انتهای کل متن را نشان می دهد. اگر این اصلاح کننده مشخص شده باشد، به ترتیب به ابتدا و انتهای هر خط متن اشاره می کنند.
س متاکاراکتر پیش فرض " . " یک کاراکتر خط جدید را در تعریف خود شامل نمی شود. مشخص کردن این اصلاح کننده این محدودیت را حذف می کند.
U طمع یک عبارت منظم را از بین می برد
تو عبارات منظم را برای کار با آنها فعال می کند سیریلیک به UTF-8در غیر این صورت درست کار نمی کند

توابع php برای کار با عبارات منظم

preg_replace

جستجو و جایگزینی:

preg_replace (مخلوط $pattern ، مختلط $جایگزینی ، مختلط $subject [, int $limit = -1 [, int &$count ]]);

هر مقدار می تواند یک رشته یا یک آرایه باشد موضوع $آرایه - یک آرایه برگردانده می شود، در غیر این صورت یک رشته

preg_split

یک رشته را با عبارت منظم تقسیم می کند:

preg_split(string $pattern, string $subject [, int $limit = -1 [, int $flags = 0 ]]);

آرایه ای متشکل از زیر رشته های رشته داده شده را برمی گرداند موضوع، که در امتداد مرزهای مطابق با الگو تقسیم می شود الگو.

برترین مقالات مرتبط