آموزش 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)
در ادامه توضیح مربوط به هر کدام از این ورودیها را مشاهده میکنید:
- Search: این ورودی همان چیزی است ک قصد دارید در رشته متنی به دنبال آن بگردید. این ورودی میتواند یک رشتهمتنی یا یک آرایه باشد.
- replace: تمام یافتههای حاصل از جستجوی رشتههای متنی با این ورودی جایگزین میشوند. این ورودی در واقع مقدار جدیدی است که قصد دارید آن را با مقادیر قدیمی مورد نظر جایگزین کنید.
- orginalString: رشته متنی اولیه که قصد دارید در آن به جستجو و جایگزین کردن رشتههای جدید بپردازید.
برای درک بهتر این تابع به مثال زیر توجه کنید:
<?php
//string that needs to be customized $first= "Welcome to zoomit"; $sec= str_replace("zoomit", "zoomg", $first); echo $sec;
?>
نتیجه اجرای کد بالا عبارت Welcome to zoomg خواهد بود. چراکه با استفاده از تابع str_replace کلمه zoomit را به zoomg تغییر دادهایم و خروجی آن را در متغیری به نام 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 = "zoomit";
$finalStr = md5($str);
echo $finalStr;
?>
نتیجه اجرای کد فوق چاپ عبارت 59bc7da94789753a34bb5e6ab8808d5a در مرورگر کاربر خواهد بود. همانطور که میبینید این تابع فقط یک ورودی دریافت میکند و آن هم همان رشته متنی است که قصد دارید آن را رمزنگاری کنید.
تابع ()str_word_count
از این تابع به منظور شمارش تعداد کلمات موجود در یک رشته متنی استفاده میشود. ساختار کلی این تابع به شکل زیر است:
str_word_count(string,return,char)
این تابع سه ورودی دارد که ورودی اول ضروری و ورودی دوم و سوم اختیاری هستند و میتوان آنها را در تابع وارد نکرد.
- string: رشته متنی که قصد دارید تعداد کلمات آن را شمارش کنید.
- return: این ورودی اختیاری است. میتوان سه مقدار برای آن تعیین کرد. اگر این ورودی ۰ باشد، خروجی تابع همان تعداد کلمات رشته متنی است که به صورت پیش فرض اگر وارد نشود هم همان صفر در نظر گرفته میشود. اگر این آرگومان ۱ باشد، خروجی تابع یک آرایه از تمام کلمات رشته متنی مورد نظر خواهد بود. اگر این آرگومان ۲ باشد خروجی تابع آرایهای از کلمات خواهد بود با این تفاوت که این بار کلید هر عضو از آرایه در واقع جایگاه آن در رشته متنی خواهد بود.
- char: این آرگومان نیز اختیاری است. میتوان با این ورودی برخی کاراکترهای خاص را به عنوان کلمه در نظر گرفت.
برای آشنایی بیشتر با این تابع به مثال زیر دقت کنید:
<?php
$str = "zoomit website";
$finalStr = str_word_count($str);
echo $finalStr;
?>
نتیجه اجرای کد فوق عدد ۲ خواهد بود چراکه رشته متنی مورد نظر ما شامل دو کلمه است.
تابع ()strlen
با استفاده از این تابع میتوانید تعداد کاراکترهای یک رشته متنی را شمارش کنید. این تابع فقط یک ورودی دارد و آن هم رشته متنی مورد نظری است که قصد دارید تعداد کاراکترهایش را بشمارید. به مثال زیر دقت کنید.
<?php
$str = "zoomit website";
$finalStr = strlen($str);
echo $finalStr;
?>
نتیجه اجرای کد فوق عدد ۱۴ خواهد بود. چراکه رشته متنی ذخیره شده در متغیر str در کد بالا، شامل ۱۴ کاراکتر است. دقت کنید که فاصله هم به عنوان یک کاراکتر شناخته میشود.
تابع ()substr
از این تابع به منظور برش دادن بخش خاصی از یک رشته متنی میتوان استفاده کرد. خروجی این تابع بخش مورد نظر شما خواهد بود. این تابع سه ورودی دارد و ساختار کلی آن به شکل زیر است:
substr(string,start,length)
توضیحات مربوط به ورودیهای این تابع در زیر آورده شده است:
- string: رشته متنی که قصد دارید بخشی از آن را برش دهید.
- start: جایگاهی که قصد دارید از آنجا عمل برش رشته متنی انجام شود. این عدد در واقع شماره جایگاه کاراکتر اولیهای است که قصد دارید برش را از آنجا آغاز کنید. اگر این مقدار ۰ باشد، عملیات برش از اولین کاراکتر شروع میشود.
- 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
بدین طریق با این تابع میتوانید بخش مورد نظر خود را از هر رشته متنی برش دهید.
امیداوریم از این جلسه از سری آموزشهای پیاچپی نهایت استفاده را ببرید. در جلسات آینده و مباحث پیشرفتهتر با توابع بیشتری آشنا خواهید شد.
در پایان هرگونه سوالی در مورد مباحث این جلسه دارید آن را در بخش نظرات اعلام کنید.