آموزش 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

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

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

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.