pedia-learning

ورود

گذرواژه‌تان را فراموش کرده‌اید؟

ثبت نام

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

اگر اولین بار از انجمن بازدید می کنید برای دسترسی کامل به انجمن عضو شوید بعد عضویت قادر به ارسال مطلب و شرکت در بحث خواهید داشت

ارسال پاسخ 
 
امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
عبارات با قاعده یا 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)) {
    echo 
$email " is a valid email";
} else {
    echo 
$email " is an invalid";


چک کردن فرمت تاریخ

کد php:
if (preg_match("/^\d{4}-\d{2}-\d{2}$/"$date)) {
    echo 
$date " date format is valid";
} else {
    echo 
$date " date format is not valid";


چک کردن نام یک دامنه

کد 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();
preg_match_all('/(img|src)=("|')[^"'>]+/i', $data$media);
unset(
$data);
$data=preg_replace('/(img|src)("|'|="|=')(.*)/i',"$3",$media[0]);
foreach($data as $url)
{
    $info = pathinfo($url);
    if (isset($info['
extension']))
    {
        if (($info['
extension'] == 'jpg') ||
        ($info['
extension'] == 'jpeg') ||
        ($info['
extension'] == 'gif') ||
        ($info['
extension'] == 'png'))
        array_push($images, $url);
    }


چک کردن پیچیده بودن پسورد

کد 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' 
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان


Persian Translation by MyBBIran.com - Ver: 4.1
Powered by MyBB, © 2002-2024 MyBB Group.
Theme designed by Marvel (Sidebar created by Yaldaram - Yaldaram.com)
Theme Translation by Mt Edition