عبارات با قاعده یا Regex در PHP
|
01-06-2014, 01:36 PM
ارسال: #1
|
|||
|
|||
عبارات با قاعده یا Regex در PHP
توی این باهم در موردعبارات باقاعده در php حرف میزنیم. اینکه چی هست ؟ از کجا اومده ؟ و چه کاربردی داره.
Regular Expression در لغت به معنی عبارات با قاعده است. این ابزار برای دستکاری رشته ها کاربرد داره. مثلا میخواین در رشته ای یک رشته دیگه رو پیدا کنید یا با یک رشته دیگه جایگزینش کنید و … این ابزار در سال ۱۹۵۰ توسط Stephen Kleene ریاضیدان آمریکایی معرفی شد. بعد از اون در سیستم های مختلف به کار گرفته شد. در نگاه اول به regex شاید به نظرتون ترسناک بیاد و تا به حال هیچ وقت باهاش کار نکرده باشد. اما وقتی که از این ابزار در برنامه نویسی استفاده میکنید میبینید که خیلی جاها به کمک تون میاد و با تمرین زیاد میتونید به regex مسلط شید. توی این پست سعی میکنیم با مقدمات regex آشنا شیم. برای استفاده از این ابزار در php توابع زیر معرفی شدند : preg_filter preg_grep preg_last_error preg_match_all preg_match preg_quote preg_replace_callback preg_replace preg_spli که تمام این توابع از قوانین regex استفاده میکنن. خب بیاین با معنی کاراکترهای این ابزار آشنا بشیم : نتیجه regex پیدا کردن کلمه foo foo شروع یک رشته با کلمه foo ^foo پایان یافتن یک رشته با کلمه foo foo$ وقتی که خود کلمه foo در یک رشته باشد ^foo$ حرف c یا b یا a [abc] تمام حروف از a تا z [a-z] کارکترهایی که بزرگ نیستند [^A-Z] پیدا کردن gif یا jpg (gif|jpg) یک یا جند کلمه با حروف کوچک [a-z]+ اعداد ، نقطه و یا علامت منفی [۰-۹\.\-] هر کلمه که حداقل یک حرف ، عدد یا آندرلاین داشته باشه ^[a-zA-Z0-9_]{1,}$ wy, wz, xy, یا xz ([wx])([yz]) هر کاراکتری به غیر از حروف و اعداد [^A-Za-z0-9] سه حرف و چهار عدد ([A-Z]{3}|[0-9]{4}) تا اینجا ممکنه یه کم گیج شده باشید که چطور از این ابزار استفاده کنیم. تابع preg_match در php یک رشته میگیره و اگر بر طبق الگوی مورد نظرباشه عدد ۱ رو برمیگردونه. تابع زیر رو درنظر بگیرید : if(preg_match(“/^[A-Za-z]+$/”, ‘phpro’)){ echo ‘Text only!’; } else { echo ‘Text and something else!’; } کد بالا با استفاده از تابع preg_match چک میکنه که آیا رشته مورد نظر فقط از حروف ( کوچک و بزرگ ) تشکیل شده یا عدد و بقیه کاراکترها هم داخلش هست . از این تابع میتونید برای پیدا کردن یک رشته داخل رشته دیگه هم استفاده کنید. مثال زیر رو درنظر بگیرید : if (preg_match(“/php/”, “phpor.ir”)) { echo “String ‘phpro.ir’ contains ‘php’”; } else { echo “String ‘phpro.ir’ does not contain ‘php’”; } اگر میخواید که نسبت به حروف کوچک و بزرگ حساس نباشه میتونید از آپشن /i استفاده کنید : if (preg_match(“/php/i”, “PHPor.ir”)) { echo “String ‘phpro.ir’ contains ‘php’”; } else { echo “String ‘phpro.ir’ does not contain ‘php’”; } در ادامه چندتا مثال از کاربرد عبارات باقاعده میزنم تا با شکل کلی این ابزار بیشتر آشنا بشید. البته چیزی که مهمه اینه که برای درک بیشتر باید تمرین زیادی داشته باشید تا با یک نگاه بتونید معنی عبارت چیه اعتبار سنجی ایمیل : کد php: if (preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/', $info@.com)) { چک کردن فرمت تاریخ کد php: if (preg_match("/^\d{4}-\d{2}-\d{2}$/", $date)) { چک کردن نام یک دامنه کد php: class="brush: php; gutter: true">$url = "http://komunitasweb.com/"; if (preg_match('/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i', $url)) { echo "Your url is ok."; } else { echo "Wrong url."; }> پیدا کردن تمام عسکهای موجود در صفحه HTML کد php: $images = array(); چک کردن پیچیده بودن پسورد کد php: 'A(?=[-_a-zA-Z0-9]*?[A-Z])(?=[-_a-zA-Z0-9]*?[a-z])(?=[-_a-zA-Z0-9]*?[0-9])[-_a-zA-Z0-9]{6,}z' |
|||
|
کاربرانِ درحال بازدید از این موضوع: 1 مهمان