توابع رشته ها و ثابت ها (constants)

درسنامه درس 5 از سری آموزش PHP 7

دوستان همیشگی سلام! امروز با بحث جذاب ثابت ها و توابع رشته ها در php با شما هستیم.

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

رشته (string) توالی خاصی از کاراکترهاست. چند مثال:

  • "Amir Zouerami"
  • "Roxo"
  • "Hello World"

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

محاسبه ی طول رشته

تابع ()strlen طول رشته ی مورد نظر شما را برمی گرداند. در مثال زیر می خواهیم طول رشته ی "!Hello world" را محاسبه کنیم:

<!DOCTYPE html>
<html>
<body>

<?php
echo strlen("Hello world!");
?> 
 
</body>
</html>

مشاهده ی خروجی

خروجی این مثال همانطور که می بینید عدد 12 است. چرا؟ به این دلیل که اسپیس هم یک کاراکتر محسوب می شود.

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

تابع ()str_word_count در زبان php تعداد کلمات را به شما برمی گرداند. برای این قسمت نیز از مثال Hello world استفاده می کنیم:

<!DOCTYPE html>
<html>
<body>

<?php
echo str_word_count("Hello world!");
?> 
 
</body>
</html>

مشاهده ی خروجی

خروجی کد بالا همانطور که مشاهده می کنید عدد 2 است.

برعکس کردن یک رشته

برای برعکس کردن یک رشته باید از تابع ()strrev استفاده کنید. به مثال زیر دقت کنید:

<!DOCTYPE html>
<html>
<body>

<?php
echo strrev("Hello world!");
?> 
 
</body>
</html>

مشاهده ی خروجی

خروجی این رشته dlrow olleH! خواهد بود که برعکس شده ی عبارت !Hello world است.

جست و جو در رشته ها

تابع ()strpos در زبان php یک متن را از شما می گیرد و سپس در یک رشته به دنبال آن متن می گردد. اگر چیزی پیدا کند موقعیت مکانی اولین کاراکتر رشته ی پیدا شده را به شما می دهد و اگر چیزی پیدا نکند FALSE را برمی گرداند. در مثال پایین می خواهیم world را در رشته ی !Hello world پیدا کنیم:

<!DOCTYPE html>
<html>
<body>

<?php
echo strpos("Hello world!", "world");
?> 
 
</body>
</html>

مشاهده ی خروجی

خروجی این متن 6 است. چرا؟ این تابع به دنبال کلمه ی world میگشته است. حرف اول world، حرف w است بنابراین اگر از ابتدای رشته ی !Hello world بشماریم می بینیم که ششمین موقعیت مکانی متعلق به w است. توجه داشته باشید که این شمارش از صفر شروع می شود بنابراین حرف H صفر است، حرف e یک است و الی آخر...

جایگزین کردن متن در رشته

اگر می خواهید متن خاصی را در یک رشته جایگزین کنید باید از تابع ()str_replace استفاده کنید. مثلا می خواهیم در کد زیر رشته ی world را با Dolly جایگزین کنیم:

<!DOCTYPE html>
<html>
<body>

<?php
echo str_replace("world", "Dolly", "Hello world!");
?> 
 
</body>
</html>

مشاهده ی خروجی

خروجی این کد !Hello Dolly است. پارامتر اول تابع می گوید فلان رشته را پیدا کن، پارامتر دوم می گوید فلان رشته را با آن جایگزین کن و سومین رشته می گوید که پارامتر اول را در کدام رشته پیدا کند.

ثابت ها (constant)

ثابت ها مانند متغیرها وظیفه ی نگهداری مقداری خاص را بر عهده دارند، تنها تفاوت آن ها این است که اگر یک ثابت را تعریف کنید دیگر نمی توانید آن را تغییر دهید. ثابت ها معمولا نشانه/نامی برای یک مقدار ساده می باشند که هنگام اجرای اسکریپت قابلیت تغییر یافتن ندارند. یادتان باشد که در نام گذاری ثابت ها از علامت $ استفاده نمی کنیم بلکه از تابع ()define استفاده می کنیم.

نکته: برخلاف متغیر ها ثابت ها از همان ابتدای کار در سرتاسر اسکریپت به صورت سراسری (global) قابل دسترسی هستند.

همانطور که گفته شد برای ساخت یک ثابت باید از تابع ()define استفاده کنید. ساختار کلی استفاده از این دستور به شکل زیر است:

define(name, value, case-insensitive)

پارامترهایی که در فرمول بالا می بینید:

  • name: نام ثابت را در این قسمت می نویسید.
  • value: مقدار ثابت را در این قسمت می نویسید.
  • case-insensitive: مشخص می کند که ثابت نسبت به بزرگی یا کوچکی حروف انگلیسی حساس باشد یا خیر. مقدار پیش فرض false (حساس بودن) است.

در مثال زیر یک ثابت می سازیم که نسبت به بزرگی و کوچکی حروف انگلیسی حساس باشد:

<!DOCTYPE html>
<html>
<body>

<?php
// case-sensitive constant name
define("GREETING", "Welcome to Roxo.ir!");
echo GREETING;
?> 

</body>
</html>

این کد یک ثابت می سازد و خروجی آن !Welcome to Roxo.ir خواهد بود. از آنجا که این ثابت نسبت به بزرگی و کوچکی حروف حساس است بنابراین برای صدا زدن آن از GREETING استفاده کرده ایم. اگر از greeting استفاده کنیم به خطا برخورد خواهیم کرد.

حالا همین مثال را به صورت case-insensitive (یعنی حساس نبودن به بزرگی و کوچکی حروف) می نویسیم:

<!DOCTYPE html>
<html>
<body>

<?php
// case-insensitive constant name
define("GREETING", "Welcome to Roxo.ir!", true);
echo greeting;
?> 

</body>
</html>

خروجی این عبارت باز هم !Welcome to Roxo.ir خواهد بود اما زمانی که بخواهیم آن را صدا بزنیم نسبت به بزرگی و کوچکی حروف نامش حساس نیست. بنابراین انواع greeting و GREETING و grEEting و... صحیح هستند.

آرایه های ثابت

یکی از ویژگی های جالب در PHP 7 وجود آرایه های ثابت است. شما می توانید با استفاده از تابع ()define به شکل زیر یک آرایه بسازید:

<!DOCTYPE html>
<html>
<body>

<?php
define("cars", [
    "Alfa Romeo",
    "BMW",
    "Toyota"
]);
echo cars[0];
?> 

</body>
</html>

مشاهده ی خروجی

ثابت ها سراسری هستند

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

<!DOCTYPE html>
<html>
<body>

<?php
define("GREETING", "Welcome to Roxo.ir!");

function myTest() {
    echo GREETING;
}
 
myTest();
?> 

</body>
</html>

خروجی این کد عبارت !Welcome to Roxo.ir است بنابراین با اینکه ثابت خارج از تابع تعریف شده است اما هنوز هم به آن دسترسی داریم.

امیدواریم از بحث ثابت ها و توابع رشته ها در PHP استفاده کافی را برده باشید.

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری آموزش PHP 7 توصیه می‌کند:
نویسنده شوید

دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.