آموزش PHP : کار با رشته ها
همانطور که در بخش مربوط به انواع داده در PHP نیز به آن اشاره کردیم، String یا رشته مجموعه ای از کارکتر هاست. مثلا عبارت “سلام دنیا!” یک رشته است. در ادامه این بخش، به تعدادی از توابع مخصوص به کار با رشته ها در PHP میپردازیم. البته بدیهی است که توابع مخصوص کار با رشته ها در پی اچ پی بسیار زیاد بوده وهر یک کاربرد خاص خود را دارند. بنابراین امکان پرداختن به همه ی آنها در این آموزش میسر نخواهد بود. اما در پایان این بخش از آموزش، برای کسانی که مایلند با کلیه ی این توابع آشنایی پیدا کنند، لینک صفحه مربوط به این توابع در سایت رسمی php را قرار خواهیم داد.
آشنایی با برخی توابع مخصوص کار با رشته ها در PHP
تشخیص طول رشته در PHP
جهت تشخیص طول یک رشته از تابع strlen()
استفاده میکنیم. کار این تابع این است که یک رشته را دریافت کرده و طول آن را به ما بر میگرداند :
1 2 3 | <?php echo strlen("Hello world!"); // outputs 12 ?> |
خروجی کد بالا 12 خواهد بود. توجه داشته باشید که تابع strlen()
در پی اچ پی برای سنجش طول عبارات فارسی مناسب نیست. مثلا اگر در مثال بالا میخواستیم با این تابع طول عبارت “سلام دنیا!” را پیدا کنیم، تابع مقدار 18 را به ما باز میگرداند که طبعا صحیح نیست. بنابراین برای سنجش طول رشته های فارسی بهتر است از تابع mb_strlen()
استفاده کنید. مانند مثال زیر :
1 2 3 | <?php echo mb_strlen("سلام دنیا", 'UTF-8') ?> |
شمارش تعداد کلمات در یک رشته در PHP
برای شمارش تعداد کلمات یک رشته در پی اچ پی از تابع str_word_count()
استفاده میکنیم. مانند مثال زیر :
1 2 3 | <?php echo str_word_count("Hello World!"); ?> |
نتیجه اجرای کد بالا عدد 2 خواهد بود. درست مانند تابع قبلی، این تابع هم برای شمارش کلمات در رشته های فارسی به درستی کار نمیکند. مثلا اگر همین کد را برای شمارش کلمات در عبارت “سلام دنیا!” به کار بگیرید، نتیجه ی بازگردانده شده معادل 0 خواهد بود. به همین جهت برای شمارش تعداد کلمات در رشته های فارسی لازم است از کد زیر استفاده کنید :
1 2 3 4 | <?php $string = "سلام دنیا!"; echo count(preg_split('~[\p{Z}\p{P}]+~u', $string, null, PREG_SPLIT_NO_EMPTY)); ?> |
معکوس کردن رشته در PHP
برای معکوس کردن یک رشته در پی اچ پی از تابع strrev()
استفاده میکنیم. مانند کد زیر :
1 2 3 | <?php echo strrev("Hello World!"); ?> |
خروجی این کد عبارت “!dlrow olleH” خواهد بود. مجددا کد بالا نیز برای رشته های فارسی به درستی کار نمیکند. برای رشته های فارسی میتوانید از کد زیر استفاده کنید :
1 2 3 4 5 | <?php $str = "سلام دنیا!"; preg_match_all('/./us', $str, $fa); echo '<br>'.join('', array_reverse($fa[0])); ?> |
کد بالا به درستی عبارت “!ایند مالس” را در خروجی به نمایش خواهد گذاشت.
جستجو به دنبال متن خاص در یک رشته در PHP
برای یافتن عبارتی در یک رشته، از تابع strpos()
استفاده میکنیم. اگر تابع بتواند نتیجه ای پیدا کند، موقعیت اولین نتیجه را باز میگرداند و اگر چیزی پیدا نکند، خروجی آن معادل FALSE خواهد بود. در مثال زیر در رشته ی “Hello World!” به دنبال کلمه ی World گشته ایم :
1 2 3 | <?php echo strpos("Hello world!", "world"); ?> |
نتیجه ی اجرای کد بالا عدد 6 خواهد بود. حال اگر میخواستیم در یک رشته ی فارسی جستجو کنیم میبایست از کد زیر و تابع mb_strpos()
استفاده میکردیم :
1 2 3 | <?php echo mb_strpos("سلام دنیا!", "دنیا", 0, "UTF-8"); ?> |
جایگزینی متن در رشته در PHP
برای جایگزین کردن بخشی از یک رشته با رشته ی دلخواه دیگر از تابع str_replace()
استفاده میکنیم. مانند کد زیر :
1 2 3 | <?php echo str_replace("دنیا", "به شما", "سلام دنیا!"); ?> |
تقسیم رشته به آرایه در PHP
برای تبدیل اجزای یک رشته به یک آرایه از تابع explode() استفاده میکنیم. سینتکس این تابع به شکل زیر است :
explode(separator,string,limit)
پارامتر اول یعنی separator معادل جداکننده ی دلخواه ما، string رشته ی مورد نظر ما و limit محدودیت تعداد عناصر آرایه را مشخص میکند. تعیین مقدار limit اختیاری است.
تابع explode()
در بسیاری از مواقع بسیار کاربردی است. مثلا فرض کنید میخواهیم لیستی از آیتم ها را که با ویرگول از هم جدا شده اند، تبدیل به آرایه کنیم. در این حالت میتوانیم از کد زیر استفاده کنیم :
1 2 3 4 | <?php $str = "dog,cat,zebra,horse,emu,ostrich"; print_r (explode(",",$str)); ?> |
خروجی کد بالا به صورت زیر است :
Array ( [0] => dog [1] => cat [2] => zebra [3] => horse [4] => emu [5] => ostrich )
برای بازگردانی این آرایه به حالت رشته میتوانیم از تابع implode()
استفاده کنیم.
محاسبه هش MD5 رشته در PHP
تابع md5()
جهت تبدیل یک عبارت به هش MD5 به کار میرود. در کد زیر کلمه ی Hello را هش کرده ایم :
1 2 3 4 | <?php $str = "Hello"; echo md5($str); ?> |
از این تابع میتوانید جهت هش کردن رمز های عبور پیش از ذخیره ی آنها در دیتابیس استفاده کنید تا از ذخیره ی رمز به حالت متنی واضح جلوگیری شود.
جدا کردن بخشی از یک رشته در PHP
برای جدا کردن بخشی از یک رشته میتوانید از تابع substr()
استفاده کنید.سینتکس استفاده از این تابع به صورت زیر است :
substr(string,start,length)
در این تابع تعیین مقدار length یا طول رشته الزامی نیست و اگر آن را مشخص نکنید، از محل مشخص شده تا انتهای رشته بازگردانده میشود. برای یافتن محل شروع عبارت دلخواه و طول آن میتوانید از دو تابع strpos و strlen که پیش تر در رابطه با آنها صحبت کردیم، استفاده کنید. مثال زیر، کلمه ی World را در خروجی به نمایش در می آورد :
1 2 3 | <?php echo substr("Hello world",6); ?> |
آشنایی با دیگر توابع مخصوص کار با رشته ها در PHP
همانطور که در ابتدا نیز اشاره کردیم، توابع مخصوص به کار با رشته ها در پی اچ پی به موارد معدودی که در بالا ذکر شد، خلاصه نمیشوند. برای آشنایی با سایر توابع کار را رشته در پی اچ پی میتوانید روی اینجا کلیک کرده و در وبسایت رسمی پی اچ پی با آنها آشنایی پیدا کنید.
مطالعه بخش بعدی : ثابت ها در PHP