بایگانی برچسب: s

آموزش PHP – جلسه بیستم: کار با رشته ها

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

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

تابع ()strpos

شما هنگام برنامه‌نویسی نیاز خواهید داشت تا به عنوان مثال جایگاه بخش خاصی از یک رشته متنی را بیرون بکشید. برای انجام چنین کاری می‌توانید از تابع ()strpos بهره ببرید و جایگاه بخشی از یک رشته متنی را که مدنظرتان است به‌دست آورید.

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

$numberedString = “123456789”; // 9 numbers from 1 to 9

$fivePos = strpos($numberedString, “5”);
echo $fivePos;

در مثال بالا ابتدا اعداد ۱ تا ۹ در یک متغیر قرار داده شده‌اند. سپس با استفاده از تابع strpos متغیر حاوی این اعداد را که حالا یک رشته متنی است به عنوان ورودی اول و عدد ۵ را به عنوان ورودی دوم قرار داده‌ایم. خروجی تابع را در متغیری به نام fivePos قرار داده‌ایم و آن را چاپ کرده‌ایم. خروجی این کد عدد ۶ خواهد بود. اما چرا؟ شمارش جایگاه هر کاراکتر در رشته‌ها در پی‌اچ‌پی مانند بسیاری از زبان‌های برنامه‌نویسی از ۰ شروع می‌شود. بنابراین عدد یک در رشته متنی بالا جایگاه شماره ۰ را دارد و عدد شماره ۲ جایگاه شماره ۱ و به همین ترتیب.

تابع ()str_replace

یکی دیگر از ابزارهای کلیدی در برنامه‌نویسی قابلیت جایگذاری آسان موارد دلخواه در رشته‌های متنی با مقادیر جدید است. در پی‌اچ‌پی تابعی به نام ()str_replace وجود دارد که شبیه به پردازشگر‌های کلمه کار کرده و می‌توان با استفاده از آن جای‌گذاری رشته‌ها را انجام دهید.

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

str_replace(search, replace, originalString)

در ادامه توضیح مربوط به هر کدام از این ورودی‌ها را مشاهده می‌کنید:

  1. Search: این ورودی همان چیزی است که قصد دارید در رشته متنی به دنبال آن بگردید. این ورودی می‌تواند یک رشته متنی یا یک آرایه باشد.
  2. Replace: تمام یافته‌های حاصل از جستجوی رشته‌های متنی با این ورودی جایگزین می‌شوند. این ورودی در واقع مقدار جدیدی است که قصد دارید آن را با مقادیر قدیمی موردنظر جایگزین کنید.
  3. OrginalString: رشته متنی اولیه که قصد دارید در آن به جستجو و جایگزین کردن رشته‌های جدید بپردازید.

برای درک بهتر این تابع به مثال زیر توجه کنید:

<?php
//string that needs to be customized
$first= “Welcome to mehrastan”;

$sec= str_replace(“mehrastan”, “mehrastan university”, $first);

echo $sec;
?>

نتیجه اجرای کد بالا عبارت Welcome to mehrastan university خواهد بود. چرا که با استفاده از تابع str_replace کلمه mehrastan را به mehrastan university تغییر داده‌ایم و خروجی آن را در متغیری به نام sec قرار داده‌ایم. سپس این متغیر را چاپ کرده‌ایم.

تابع ()trim

گاهی ورودی‌هایی که کاربر وارد می‌کند را باید فیلتر کنیم که در جلسه قبل با توابع مرتبط با آن آشنا شدید. اما با استفاده از تابع trim می‌توانید ابتدا کاراکترهای خالی (فاصله) سمت چپ و سمت راست رشته متنی را حذف کرده و سپس مقدار نهایی را در خروجی قرار دهید. این تابع یک ورودی دارد که آن هم رشته‌ی متنی موردنظر است که قصد حذف کاراکترهای خالی سمت چپ و راست آن را داریم. به مثال زیر توجه کنید:

<?php
//string that needs to be trimmed
$stringTest = ” test trim func “;
$finalString = trim($stringTest);
echo $finalString;
?>

در مثال بالا رشته متنی که دارای فاصله اضافه در ابتدا و انتهای خود است به عنوان ورودی در تابع trim وارد کرده و مقدار نهایی را در یک متغیر قرار داده‌ایم. سپس این متغیر را چاپ کرده‌ایم. نتیجه رشته‌ متنی بدون فاصله‌های اضافه اول و آخر آن خواهد بود.

از تابع ()ltrim و ()rtrim هم می‌توانید به صورت مشابه و به ترتیب برای حذف کاراکترهای خالی سمت چپ و حذف کاراکترهای سمت راست بهره ببرید.

تابع ()md5

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

<?php
//string that needs to encrypted
$str = “mehrastan”;
$finalStr = md5($str);
echo $finalStr;
?>

نتیجه اجرای کد فوق چاپ عبارت ۵۶۴۸۷۸۶۲c6e25c640a93c75c19379391 در مرورگر کاربر خواهد بود. همان‌طور که می‌بینید این تابع فقط یک ورودی دریافت می‌کند و آن هم همان رشته متنی‌ است که قصد دارید آن را رمزنگاری کنید.

تابع ()str_word_count

از این تابع به منظور شمارش تعداد کلمات موجود در یک رشته متنی استفاده می‌شود. ساختار کلی این تابع به شکل زیر است:

str_word_count(string,return,char)

این تابع سه ورودی دارد که ورودی اول ضروری و ورودی دوم و سوم اختیاری هستند و می‌توان آن‌ها را در تابع وارد نکرد.

  1. string: رشته متنی‌ که قصد دارید تعداد کلمات آن را شمارش کنید.
  2. return: این ورودی اختیاری است. می‌توان سه مقدار برای آن تعیین کرد. اگر این ورودی ۰ باشد، خروجی تابع همان تعداد کلمات رشته متنی است که به صورت پیش‌فرض اگر وارد نشود هم همان صفر درنظر گرفته می‌شود. اگر این آرگومان ۱ باشد، خروجی تابع یک آرایه از تمام کلمات رشته متنی موردنظر خواهد بود. اگر این آرگومان ۲ باشد خروجی تابع آرایه‌ای از کلمات خواهد بود با این تفاوت که این بار کلید هر عضو از آرایه در واقع جایگاه آن در رشته متنی خواهد بود.
  3. char: این آرگومان نیز اختیاری است. می‌توان با این ورودی برخی کاراکترهای خاص را به عنوان کلمه در نظر گرفت. 

برای آشنایی بیشتر با این تابع به مثال زیر دقت کنید:

<?php
$str = “mehrastan weblog”;
$finalStr = str_word_count($str);
echo $finalStr;
?>

نتیجه اجرای کد فوق عدد ۲ خواهد بود چراکه رشته متنی موردنظر ما شامل دو کلمه است.

تابع ()strlen

با استفاده از این تابع می‌توانید تعداد کاراکترهای یک رشته متنی را شمارش کنید. این تابع فقط یک ورودی دارد و آن هم رشته متنی موردنظری است که قصد دارید تعداد کاراکترهایش را بشمارید. به مثال زیر دقت کنید.

<?php
$str = “mehrastan weblog”;
$finalStr = strlen($str);
echo $finalStr;
?>

نتیجه اجرای کد فوق عدد ۱۶ خواهد بود. چراکه رشته متنی ذخیره شده در متغیر str در کد بالا، شامل ۱۶ کاراکتر است. دقت کنید که فاصله هم به عنوان یک کاراکتر شناخته می‌شود.

تابع ()substr

از این تابع به منظور برش دادن بخش خاصی از یک رشته متنی می‌توان استفاده کرد. خروجی این تابع بخش موردنظر شما خواهد بود. این تابع سه ورودی دارد و ساختار کلی آن به شکل زیر است:

substr(string,start,length)

توضیحات مربوط به ورودی‌های این تابع در زیر آورده شده است:

  1. string: رشته متنی‌ که قصد دارید بخشی از آن را برش دهید.
  2. start: جایگاهی که قصد دارید از آنجا عمل برش رشته متنی انجام شود. این عدد در واقع شماره جایگاه کاراکتر اولیه‌ای است که قصد دارید برش را از آنجا آغاز کنید. اگر این مقدار ۰ باشد، عملیات برش از اولین کاراکتر شروع می‌شود.
  3. length: این ورودی در واقع اختیاری بوده و می‌توانید آن را وارد نکنید. این ورودی طول رشته متنی برش خورده نهایی را بر حسب کاراکتر نشان می‌دهد. به صورت پیشفرض اگر این آرگومان را وارد نکنید رشته متنی تا آخرین کاراکتر برش خواهد خورد.

برای درک بهتر این تابع توجه شما را به مثالی که از وب‌سایت w3schools آورده شده جلب می‌کنیم:

<!DOCTYPE html>

<html>

<body>

<?php

// Positive numbers:

echo substr(“Hello world”,10).”<br>”;

echo substr(“Hello world”,1).”<br>”;

echo substr(“Hello world”,3).”<br>”;

echo substr(“Hello world”,7).”<br>”;

echo “<br>”;

// Negative numbers:

echo substr(“Hello world”,-1).”<br>”;

echo substr(“Hello world”,-10).”<br>”;

echo substr(“Hello world”,-8).”<br>”;

echo substr(“Hello world”,-4).”<br>”;

?>

</body>

</html>

خروجی کد بالا به صورت زیر خواهد بود:

d

ello world

lo world

orld

d

ello world

lo world

orld

بدین طریق با این تابع می‌‌توانید بخش موردنظر خود را از هر رشته‌ متنی برش دهید.

امیداوریم از این جلسه از سری آموزش‌های پی‌اچ‌پی نهایت استفاده را ببرید. در جلسات آینده و مباحث پیشرفته‌تر با توابع بیشتری آشنا خواهید شد.

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

آموزش PHP – جلسه هشتم: توابع

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

توابع از جمله مهم‌ترین مباحثی است که در آموزش پی‌اچ‌پی باید یاد بگیرید. این مبحث علی‌رغم اهمیت بالا و کاربرد فراوان بسیار آسان و لذت‌بخش است. پس خود را برای یک سفر کوتاه اما به یادماندنی در دنیای PHP آماده کنید.

تابع (Function) چیست؟

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

۰aceda39-23c2-43ea-87c6-d98c6bef7bb2<?php
function MyFunc (){
//some oprates on code!
}
?>

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

در پی‌اچ‌پی می‌توان توابعی تعریف کرد که نیاز به ورودی نداشته باشند و این نوع توابع در واقع ساده‌ترین نوع ممکن توابع به حساب می‌آیند. به مثال زیر دقت کنید:

<?php
//define func
function bigHello()
{
echo “<h1>hello!</h1>”;
}

//call or using func
bigHello();
?>

در کد بالا ابتدا یک تابع به نام bigHello را معرفی کردیم و کد داخل آن را چاپ عبارت hello در بین تگ h1 تعیین کرده‌ایم. اما همان‌طور که اشاره شد تا زمانی که تابع را فراخوانی نکنیم هیچ اتفاقی نخواهد افتاد و به همین دلیل در خط بعدی با نوشتن نام تابع به صورتی که مشاهده می‌کنید آن را فراخوانی کرده‌ایم. نتیجه کد بالا چاپ عبارت Hello! در بین تگ h1 خواهد بود. حال شما می‌توانید به هر تعداد که می‌خواهید این تابع را فراخوانی کنید و طبیعتا به ازای هر بار فراخوانی تابع، یکبار کد داخل آن اجرا می‌شود.

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

پارامتر‌ها در توابع یا همان ورودی توابع

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

<?php

function myFunc ($name, $age)
{

echo “your name is $name and your age is $age”;

}

myFunc(“mojtaba”, “25”);

?>

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

اگر در کد بالا، به جای دو ورودی، یک ورودی را وارد کنید، با خطای پی‌اچ‌پی مواجه خواهید شد چرا که کامپایلر php در این شرایط نیاز دارد تا دو ورودی به تابع ما ارسال شود.

برای درک بهتر ورودی‌ها در توابع به مثال دیگری توجه کنید. قصد داریم یک تابع بنویسیم که دو عدد را از کاربر گرفته و آن‌ها را در هم ضرب و سپس نتیجه را چاپ کند.

<?php

function Zarb ($a, $b)
{
$c = $a * $b;
echo $c;
}

//using our Zarb Function
Zarb (3, 5);
?>

نتیجه اجرای کد بالا چاپ عدد ۱۵ در مروگر کاربر خواهد بود.  در مثال بالا ابتدا دو ورودی از کاربر گرفته و آن‌ها را در متغیرهایی به نام a و b ذخیره کرده‌ایم. سپس یک متغیر داخلی به نام c در تابع خود تعریف می‌کنیم و مقدار حاصل از ضرب a و b را در آن قرار می‌دهیم. سپس مقدار c را به عنوان خروجی تابع چاپ می‌کنیم.

استفاده از آرگومان‌های ورودی پیش‌فرض در توابع

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

به مثال زیر دقت کنید:

<?php

function myFunc ($name = “mojtaba”)
{
echo $name;
}

myFunc();

?>

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

مقادیر بازگشتی در توابع

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

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

<?php
function Zarb($a, $b)
{
$c = $a * $b;
return $c;
}

echo Zarb(2,3);
?>

در مثال بالا برای روشن‌تر شدن موضوع ابتدا مقدار بازگشتی تابع Zarb را در متغیری به نام c ریخته‌ایم و سپس مقدار c را با دستور echo چاپ کرده‌ایم. نهایتا خروجی کد بالا عدد ۲۰ خواهد بود. حالا احتمالا به خوبی مفهوم مقدار بازگشتی در توابع را یاد گرفته‌اید.

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

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

منبع: زومیت