کلاس آماده برای نوشتن Regex

اردیبهشت ۹, ۱۳۹۳ توسط : سعید

سلام

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

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

ابتدا کلاس رو از لینک زیر دانلود کنید :

https://github.com/VerbalExpressions/PHPVerbalExpressions/archive/master.zip

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

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

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

include 'VerbalExpressions.php';

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

 

$regex = new \VerbalExpressions\PHPVerbalExpressions\VerbalExpressions();

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

کدهای زیر رو داخل فایل index.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 چک کنیم ببینیم که آیا آدرس ما درسته یا خیر.

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

if (preg_match($regex, $url)) {
    echo 'valid url';
} else {
    echo 'invalud url';
}

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

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

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

موفق باشید

 

بازدید : ۵۳۷۰

اردیبهشت ۱۰, ۱۳۹۳ @ ۱۱:۱۲ ق.ظ

damet garm saeed , chize bedard bokhoriye bedard niroham mikhore ke regex ro hanoz balad nistan 🙂 alii bood

پاسخ دادن
    سعید مقدم زاده
    اردیبهشت ۱۰, ۱۳۹۳ @ ۱:۴۵ ب.ظ

    قربونت حامد جان 😉

    پاسخ دادن
اردیبهشت ۱۸, ۱۳۹۳ @ ۳:۱۲ ب.ظ

سلام کارت عالیه داداش …
خسته نباشید 😉
مطالب سایتتو دنبال میکنم و نکته های جدید پیدا میکنم 😉

پاسخ دادن
mohamad
خرداد ۱۴, ۱۳۹۳ @ ۳:۰۴ ق.ظ

سلام خسته نباشید، لطفا پایین سایت رو اصلاح کنید، جای copyright نوشته copywrite

پاسخ دادن
    سعید مقدم زاده
    خرداد ۱۴, ۱۳۹۳ @ ۱۲:۳۸ ب.ظ

    سلام ممنون اصلاح شد

    پاسخ دادن
مهر ۲, ۱۳۹۳ @ ۵:۳۳ ق.ظ

khaste nabashid
cheghadr khobe k beshe safe ro be sorate PDF save kard
Bezarid
Mer30

پاسخ دادن
مهر ۳, ۱۳۹۳ @ ۸:۳۸ ب.ظ

بسیار عالی و ساده و آموزنده
دست مریزاد

پاسخ دادن
رضا
بهمن ۴, ۱۳۹۳ @ ۷:۳۷ ب.ظ

بازم عالی

پاسخ دادن
مرتضی
اردیبهشت ۷, ۱۳۹۴ @ ۴:۵۸ ق.ظ

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

پاسخ دادن
وحید
آبان ۱۶, ۱۳۹۴ @ ۵:۳۷ ب.ظ

مرسی بابت آموزش های خوب و کاربردی

پاسخ دادن
mortaza7khat
مرداد ۲۳, ۱۳۹۵ @ ۲:۳۱ ب.ظ

اینقد با این regex کار کردم دیگه اسم متود های این رو میبینم regex کاری که میکنن میاد تو ذهنم!

پاسخ دادن
mortaza7khat
مرداد ۲۳, ۱۳۹۵ @ ۲:۳۱ ب.ظ

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


*