آموزش جامع رشته در PHP

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

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

  • چاپ پیام برای کاربر
  • دریافت ورودی از کاربر
  • ذخیره اطلاعات متنی در پایگاه داده
  • نام کاربری و کلمه عبور کاربر
  • نمایش کدهای HTML یا CSS در صفحه سایت

در ادامه نحوه کار با رشته در PHP را خواهیم دید و سپس توابعی که بتوان از رشته‌ها استفاده‌ی بیشتری کرد را معرفی خواهم کرد.

تعریف رشته در PHP

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

رشته‌ها در زبان PHP با علامت ' یا " شروع شده و با همان علامت به پایان می‌رسد. این علامت‌ها علامت نقل قول انگلیسی هستند که به آن‌ها در اصطلاح تک کوتیشن (Single Quote یا ') و دابل کوتیشن (Double Quote یا ") گفته می‌شود.

<?php
  $name = 'Omid';
  $site = "SabzDanesh.com";
?>

در حالت کلی تفاوتی برای استفاده از این دو وجود ندارد و هر دو یک رشته‌اند. اما برای استفاده از متغیر درون یک رشته می‌بایست از حالت دوم استفاده کنیم. این مورد را در ادامه بیشتر توضیح می‌دهم.

در قطعه کد بالا، ما دو متغیر $name و $site را به صورت رشته‌ای تعریف کرده و مقادیری برای آن‌ها در نظر گرفته‌ایم.

می‌توان گفت که اندازه رشته در PHP تقریباً هیچ محدودیتی ندارد. در نسخه‌های ماقبل 7 زبان PHP، حجم هر رشته می‌توانست حدود 2 گیگابایت باشد. اما با به‌روز‌رسانی نسخه 7 و بعد از آن، با استفاده از فضای 64 بیتی، این محدودیت به نوعی برداشته شد.

البته همان 2 گیگابایت هم عدد بسیار بزرگی است! هر کاراکتر یک بایت فضا اشغال کرده و با این حساب می‌توان میلیون‌ها کاراکتر را در یک رشته دلخواه داشت!

چاپ رشته در PHP

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

به طور معمول، از تابع معروف echo برای چاپ رشته استفاده می‌شود. این تابع نیازی به () نداشته و می‌توان رشته یا متغیر رشته‌ای را مستقیماً جلوی آن نوشت.

<?php
  $name = 'Omid';
  echo $name;
  // output: Omid

  echo 'SabzDanesh.com';
  // output: SabzDanesh.com
?>

 

کار با رشته در PHP

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

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

اتصال چند رشته به هم در پی اچ پی

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

این اطلاعات در دو متغیر $name و $family ذخیره شده است. برای اتصال دو رشته به یکدیگر از علامت نقطه (.) بین آن‌ها استفاده می‌کنیم.

از نقطه برای اتصال (الحاق یا concat) چند رشته هم استفاده می‌شود. قطعه کد زیر را در نظر بگیرید:

<?php
  $name   = 'Sara';
  $family = 'Azadegan';

  $full_name = $name . $family;
?>

اگر مقدار موجود در متغیر $full_name را چاپ کنیم، نتیجه اسم و فامیل به هم چسبیده خواهد شد.

<?php
  echo $full_name;
  // output: SaraAzadegan
?>

برای ایجاد فاصله میان دو اسم از یک کاراکتر فاصله (space) در هنگام اتصال دو رشته استفاده می‌کنیم. این کاراکتر را می‌توان به صورت ' ' در میان دو متغیر نام و نام خانوادگی قرار داد.

<?php
  echo $name . ' ' . $family;
  // output: Sara Azadegan
?>

به همین راحتی!

یک ترفند در اتصال رشته به یک متغیر

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

برای این کار احتمالاً چیزی شبیه کد زیر را می‌نویسیم.

<?php
  $str = $str . 'NEW STRING!';
?>

اگر دقت کرده باشید، در هر بار ما باید نام متغیر (رشته فعلی) را تکرار کنیم. اگر این کار برایتان تکراری یا بیهوده است، می‌توانید از عملگر ترکیبی .= استفاده کنید.

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

برای درک بهتر عملکرد این روش، روند قطعه کد زیر را مشاهده کنید.

<?php
  $msg = "Hello Dear ";
  // Some codes...

  $name = "omid";
  $msg .= $name;
  // Some Codes...

  echo $msg . '!';
  // output: Hello Dear omid!
?>

 

زیر رشته چیست ؟

زیر رشته (Sub String) به هر قطعه کوچک‌تر از یک رشته گفته می‌شود. در PHP توابعی که با substr شروع می‌شوند برای کار با زیر رشته‌ها در نظر گرفته شده‌اند.

توابعی مثل substr() برای جدا کردن یک تکه از رشته، شمارش تعداد تکرار زیر رشته با تابع substr_count() و … از این دست توابع هستند.

در مقاله‌ای دیگر در مورد کار با زیر رشته در PHP مفصلاً توضیحاتی داده‌ام. اگر می‌خواهید بیشتر با این قسمت آشنا شوید، پیشنهاد می‌کنم مقاله زیر را بخوانید.

کار با زیر رشته در PHP

کار با زیر رشته در PHP

محاسبه اندازه رشته در PHP

برای محاسبه اندازه یک رشته در پی‌اچ‌پی از تابع strlen() استفاده می‌شود. این تابع یک ورودی از نوع رشته گرفته و در خروجی یک عدد صحیح به ما می‌دهد.

<?php
  echo strlen("Hello user!");
  // output: 11
?>

از این تابع می‌توان در شرط‌ها یا بررسی رشته‌ها بهره برد. مثلاً در قطعه کد زیر، اگر طول چیزی در متغیر $user_input نداشته باشیم، خطایی به کاربر نمایش دادده می‌شود.

<?php
  if( strlen($user_input) == 0 )
    echo "لطفا چیزی به عنوان ورودی وارد کنید!";
?>

 

محاسبه تعداد کلمات یک رشته

اگر تا ویرایشگرهای متن کار کرده باشید، حتماً، دیده‌اید که تعداد کلمات متن در حال تایپ شما را در کادری به شما نمایش می‌دهد. اگر بخواهیم تعداد کلمات یک رشته را محاسبه کنیم، از تابع str_word_count() در زبان PHP استفاده می‌شود.

<?php
  echo str_word_count("hello dear SabzDanesh User!");
  // output: 4
?>

این تابع به طور پیشفرض فقط برای رشته‌های انگلیسی پاسخ درستی می‌دهد. برای رشته فارسی، می‌توان encoding پردازش را تغییر داد و یا یک تابع ساده برای این کار نوشت. تابعی که رشته را به کمک فاصله‌ها (' ') جدا کرده تا بتوانید تعداد کلمات را محاسبه کنید.

جستجو در رشته متنی با PHP

جستجو در رشته متنی با PHP

 

توابع کاربردی کار با رشته در PHP

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

جدا کردن یک رشته توسط کاراکتر خاص (split کردن رشته)

گاهی رشته‌ای داریم که می‌خواهیم به وسیله یک کاراکتر خاص آن را به چند قسمت تقسیم کنیم. مثلاً فرض کنید یک رشته از اسامی کاربران داریم که اسم هر کاربر با علامت ویرگول انگلیسی (کاما یا ,) از هم جدا شده است. می‌خواهیم این اسامی را درون یک متغیر به صورت آرایه بریزیم.

برای این کار از تابع explode() استفاده می‌کنیم. این تابع دو وردی اجباری می‌گیرد:

  • ورودی اول: کاراکتر یا رشته جداکننده (delimiter)
  • ورودی دوم: رشته‌ی مورد نظر برای جداسازی

خروجی این تابع یک آرایه PHP از رشته‌هاست که هر خانه آن یک زیر رشته از رشته اصلی است که به واسطه جداکننده جدا شده است.

<?php
  $names = "omid,sara,samiyar,hossein,negar,nazanin";
  $names_arr = explode( ',', $names );

  echo $names_arr[2];
  // output: samiyar

  print_r( $names_arr );
  // output: Array (
               [0] => omid
               [1] => sara
               [2] => samiyar
               [3] => hossein
               [4] => negar
               [5] => nazanin )
?>

در قسمت قبل گفتم که برای محاسبه تعداد کلمات فارسی، ابتدا می‌بایست آن‌ها را توسط جداکننده فاصله (' ') از هم جدا کنیم. این کار در قطعه کد زیر انجام شده است.

<?php
  $str = "این یک متن آزمایشی برای جداسازی کلمات فارسی است";

  print_r( explode( ' ', $str ) );
  // output: Array (
               [0] => این
               [1] => یک
               [2] => متن
               [3] => آزمایشی
               [4] => برای
               [5] => جداسازی
               [6] => کلمات
               [7] => فارسی
               [8] => است )
?>
توابع کاربردی کار با رشته

توابع کاربردی کار با رشته

حذف فضای خالی ابتدا و انتهای رشته

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

برای مثال، یک رشته '     ' از نظر PHP دارای 5 کارکتر space است اما از نظر ما یک رشته خاصی در نظر گرفته می‌شود.

برای حذف space ها یا علامت‌های مربوط به کدهای سیستمی از ابتدا و انتهای یک رشته، از تابع trim() استفاده می‌کنیم.

<?php
  $str = "   Test Text!  ";
  echo $str;
  // output:    Test Text!  

  echo trim( $str );
  // output: Test Text!
?>

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

جهت بررسی چگونگی تعریف پارامتر دوم تابع trim می‌توانید به مستندات آن مراجعه کنید.

حروف کوچک یا بزرگ کاراکترها در رشته

اگر در برنامه خود با رشته‌های انگلیسی سر و کار داشته باشید، با استفاده از توابع strtolower() و strtoupper() می‌توان تمام حروف یک رشته را به ترتیب به حروف کوچک یا حروف بزرگ تبدیل کرد.

هر دوی این توابع یک ورودی از نوع رشته گرفته و خروجی آن‌ها نیز یک رشته می‌باشد.

<?php
  $site = "SabzDanesh.COM";

  echo strtolower( $site );
  // output: SABZDANESH.COM

  echo strtoupper( $site );
  // output: sabzdanesh.com
?>

 

جایگزینی کلمات یک رشته با کلمه‌ای خاص

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

این تابع سه ورودی اجباری و یک ورودی اختیاری دارد:

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

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

<?php
  $str = "Banana is a delicious fruit. Banana have many properties for the body!";

  echo str_replace( 'Banana', 'Apple', $str );
  // output:
  // Apple is a delicious fruit. Apple have many properties for the body!
?>

 

محاسبه هش رشته در php

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

استفاده از دو تابع زیر برای نگهداری رمزهای عبور پیشنهاد نمی‌شود. پیشنهاد می‌کنم برای ذخیره‌سازی رمز عبور از روش‌های ترکیبی یا سایر توابع رمزنگار استفاده کنید.

1- محاسبه هش sha1

تابع sha1() یک ورودی به صورت رشته گرفته و خروجی را به صورت یک رشته به ما می‌دهد.

<?php
  echo sha1( "Test Text" );
  // output: a66cce1c6c9350dc4683fe9f05307333c84aab23
?>

 

2- محاسبه هش md5

با استفاده از تابع md5() می‌توان هش md5 یک رشته را محاسبه کرد. این تابع رشته را به عنوان ورودی گرفته و یک رشته 32 کاراکتری به ما برمی‌گرداند. توجه داشته باشید که سایز هش md5 همیشه شامل 32 کاراکتر است.

<?php
  echo md5( "Test Text" );
  // output: f1feeaa3d698685b6a6179520449e206
?>

 

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

ایجاد رشته تصادفی در PHP

ایجاد رشته تصادفی در PHP

 

جمع‌بندی آموزش: رشته در PHP

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

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

امیدوارم به خوبی با رشته‌های پی اچ پی آشنا شده باشید. اگر سوالی دارید، می‌توانید آن‌را از طریق دیدگاه‌های مقاله از ما بپرسید.

به نظر شما چه تابع مهم و پرکاربرد در کار با رشته PHP در این مقاله گفته نشده؟ لطفاً آن را با ما و دوستانتان به اشتراک بگذارید!