زیر رشته یا Sub String چیست ؟


همونطور که از اسمش مشخص هست، زیر رشته یعنی یک رشته یا string که زیر مجموعه رشته دیگری هست! فرض کنید یک عبارت خیلی ساده انگلیسی برای خوش آمد گویی به کاربرانمون، مشابه زیر داریم.
کد:
Welcome Dear Users!
از داخل رشته بالا هر زیر مجموعه ای که یک رشته به حساب بیار رو میتونیم به عنوان یک زیر رشته در نظر بگیریم. در هر خط زیر یک SubString از رشته بالا رو میبینید:
کد:
Welcome Dear Dear User ers! lcome D c
ساخت زیر رشته از رشته در PHP

برای ایجاد یک زیر رشته از رشته مورد نظرمون، میتونیم از تابع substr در زبان برنامه نویسی PHP استفاده کنیم. تابع substr() برای استخراج بخشی از یک رشته استفاده میشه.

ساختار کلی تابع substr

این تابع سه ورودی میگیره که دو تای اولی اجباری و پارامتر سوم به صورت اختیاری هست.

ساختار کلی تابع به شکل زیر تعریف میشود.

کد:
substr($STRING, $START, $LENGTH)
ورودی های تابع

اولین ورودی (STRING) همان رشته اصلی ماست که میخواهیم از آن یک زیررشته ایجاد کنیم. این پارامتر اجباری بوده و ورودی آن میتواند از یک کاراکتر تا رشته ای طولانی باشد.

ورودی دوم (START) مشخص کننده ایندکس شروع زیر رشته است. یعنی زیر رشته نهایی از کجای رشته فعلی می بایست شروع شود. همانطور که میدانید شمارش خانه های ایندکس رشته در PHP از شماره 0 شروع شده و تا یکی کمتر از اندازه رشته ادامه می یابد.

نوع این آرگومان یک عدد صحیح هست. اگر مقدار مثبت تعریف شود، شمارش خانه ایندکس از ابتدای رشته آغاز میشود و اگر مقدار آن منفی باشد، شمارش از انتهای رشته اصلی انجام میشود.
ورودی سوم (LENGTH) مشخص کننده طول زیر رشته مورد نظر می باشد. با مشخص کردن این مقدار، به تابع می فهمانیم که زیر رشته نهایی که از ایندکس START شروع شده تا چه اندازه یا تا کجای رشته اصلی ادامه خواهد داشت.

این مقدار میتواند مثبت، منفی و حتی صفر (یا FALSE و NULL) باشد.
اگر مقدار آن مقداری مثبت باشد، مشخص کننده طول زیر رشته خواهد بود. به عنوان مثال، فرض کنید متغیر شروع، ایندکس 2 بوده و مقدار طول زیر رشته 5 است. رشته نهایی از ایندکس شماره 2 رشته اصلی شروع شده و تا ایندکس 6 (حاصل مجموع دو مقدار منهای یک: 2+5-1) ادامه می یابد.
کد:
<?php $str = "Welcome Dear Users!"; echo substr($str, 2, 5); // "lcome" ?>
اگر مقدار آن مقداری منفی بود، به این معنی است که انتهای زیر رشته می بایست تا کاراکتری با ایندکس مقدار منفی داده شده ادامه پیدا کند.

کد:
<?php echo substr($str, 2, -3); // "lcome Dear Use" ?>
اگر مقدار این ورودی صفر، FALSE یا NULL باشد، زیر رشته نهایی خالی است. (فقط یک رشته خالی تولید میکنیم!)

کد:
<?php echo substr($str, 2, FALSE); // "" ?>
همانطور که گفته شد، آرگومان سوم این تابع، اختیاری است. اگر این آرگومان تعریف نشود، از ایندکس تعیین شده تا انتهای رشته، به عنوان زیر رشته نهایی خروجی داده خواهد شد.
کد:
<?php echo substr($str, 2); // "lcome Dear Users!" ?>