انجمن عمومی گسترش فناوری آگو

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

کلاس VerbalExperssions یک کلاس که دراصل برای زبان جاوااسکریپت نوشته شده و بقیه توسعه دهنده ها اومدن و برای زبانهای مختلف این کلاس رو توسعه دادن. باید خوشحال باشیم که یک کلاس هم برای زبان PHP نوشته شده که در ادامه نحوه کار کرد این کلاس رو میبینیم باهم.

ابتدا کلاس رو از لینک زیر دانلود کنید :
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.


بعد از اینکه فایل رو از حالت فشرده خارج کردین کلاس VerbalExpressions.php رو توی مسیر روت قرار بدین.

یک فایل با نام index.php ایجاد کنید که قراره کدهای زیر رو داخلش بنویسیم .

ابتدا کلاس VerbalExpressions.php رو توی برنامه include میکنیم :

کد php:
include 'VerbalExpressions.php'

سپس از این کلاس یک شیء جدید میسازیم :

کد php:
$regex = new \VerbalExpressions\PHPVerbalExpressions\VerbalExpressions(); 

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

کدهای زیر رو داخل فایل index.php قرار بدید :

کد php:
$url "http://phpro.ir";

$regex->startOfLine()
      ->
then("http")
      ->
maybe("s")
      ->
then("://")
      ->
maybe("www.")
      ->
anythingBut(" ")
      ->
endOfLine();

if(
$regex->test($url))
    echo 
"valid url"'<br>';
else
    echo 
"invalid url"'<br>'

فکر کنم که متدهای این کلاس به وضوح مشخصه که چطورکار میکنن اما یه توضیح کوچیک میدم براتون.

متد startOfLine : چک میکنه که با چی شروع بشه

متد then : چک میکنه که حتما دارای http باشه

متد maybe : مشخص میکنه که ممکنه حرف s هم بعد از http باشه

متد anythingBut : چک میکنه که هر چیزی به غیر از فاصله وجود داشته باشه

متد endOfLine : پایان regex رو مشخص میکنه.

به همین راحتی تونستیم یک عبارت باقاعده یا regex رو برای اعتبار سنجی URL بنویسیم.

بعد از اینکار میتونی با متد test چک کنیم ببینیم که آیا آدرس ما درسته یا خیر.

به صورت زیر هم میشه از این کلاس استفاده کرد :
کد php:
if (preg_match($regex$url)) {
    echo 
'valid url';
} else {
    echo 
'invalud url';


متغیر #regex در اصل همون شیء ساخته شده VerbalExperssions هست که توی تابع preg_match ازش استفاده کردیم.

این کلاس واقعا کاربردیه و میتونید توی پروژه هاتون ازش استفاده کنید.

برای اطلاعات بیشتر هم میتونید فایل نمونه خودش رو نگاه کنید .

موفق باشید
لینک مرجع