دوستان همیشگی سلام! امروز با بحث جذاب ثابت ها و توابع رشته ها در php با شما هستیم.
رشته (string) توالی خاصی از کاراکترهاست. چند مثال:
در این مقاله برخی از توابع رشته ها در 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 است. پارامتر اول تابع می گوید فلان رشته را پیدا کن، پارامتر دوم می گوید فلان رشته را با آن جایگزین کن و سومین رشته می گوید که پارامتر اول را در کدام رشته پیدا کند.
ثابت ها مانند متغیرها وظیفه ی نگهداری مقداری خاص را بر عهده دارند، تنها تفاوت آن ها این است که اگر یک ثابت را تعریف کنید دیگر نمی توانید آن را تغییر دهید. ثابت ها معمولا نشانه/نامی برای یک مقدار ساده می باشند که هنگام اجرای اسکریپت قابلیت تغییر یافتن ندارند. یادتان باشد که در نام گذاری ثابت ها از علامت $ استفاده نمی کنیم بلکه از تابع ()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 استفاده کافی را برده باشید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.