دوره‌ها / آموزش جامع PHP (از صفر تا استادی) / رشته‌ها (PHP Strings)

رشته‌ها (PHP Strings)

30 دقیقه Article

رشته‌ها: دستکاریِ متن‌ها با ظرافت 🧵📖

بیشترِ فعالیت‌های وب بر پایه‌یِ نمایشِ متن است. PHP توابعِ قدرتمندی برایِ کار با رشته‌ها (Strings) در اختیار دارد.

توابعِ پرکاربرد:

  • strlen(): طولِ رشته را برمی‌گرداند.
  • str_word_count(): تعدادِ کلماتِ یک جمله را می‌شمارد.
  • strrev(): متن را وارونه (معکوس) می‌کند.
  • strpos(): موقعیتِ یک کلمه را در متن پیدا می‌کند.
  • str_replace(): یک کلمه را با کلمه‌یِ دیگری جایگزین می‌کند.

الحاق (Concatenation) 🔗

برخلافِ جاوااسکریپت که از + استفاده می‌کند، در PHP برایِ چسباندنِ دو رشته به هم از نقطه (.) استفاده می‌کنیم.

{code_block('$a = "Hi";\n$b = " PHP";\necho $a . $b;')}
Heredoc: روشی عالی برایِ نوشتنِ متونِ بسیار طولانی و چندخطی که در آن متغیرها هم پردازش می‌شوند. {code_block('$text = <<<EOD\nThis is a long text\nspanning lines.\nEOD;')} </div>
کاراکترهایِ فرار (Escape): اگر می‌خواهید در متنی که با " محصور شده، خودِ علامت " را چاپ کنید، باید از " استفاده کنید.

تغییرِ حالت:

{code_block('echo strtoupper("hello"); // HELLO')}
توابعِ چندبایتی (mb_): برایِ کار با زبان‌هایی مثل فارسی، حتماً از توابعی که با mb_ شروع می‌شوند (مثل mb_strlen) استفاده کنید تا حروفِ فارسی درست شمرده شوند.
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: کالبدشکافی زبان PHP و موتور Zend 🐘⚙️

درکِ عمیقِ PHP نیازمند آشنایی با آن چیزی است که در پشتِ صحنه اتفاق می‌افتد. PHP یک زبانِ تفسیری (Interpreted) است که توسط موتور قدرتمند Zend Engine اجرا می‌شود.

۱. چرخه عمر درخواست (Request Lifecycle)

در هر بار لود شدنِ صفحه، PHP مراحلِ زیر را طی می‌کند:

  • Lexing/Scanning: تبدیلِ کدها به توکن‌هایِ معنادار.
  • Parsing: ساختِ یک ساختارِ درختی از کدها (AST).
  • Compilation: تبدیلِ درختِ کد به OpCodes (دستورالعمل‌هایِ سطحِ پایین).
  • Execution: اجرایِ OpCodeها توسط مفسرِ Zend.

۲. مدیریت حافظه (Zend Memory Manager)

PHP برخلافِ زبان‌هایی مثل C، مدیریتِ حافظه را به صورتِ خودکار انجام می‌دهد. با استفاده از تکنیکِ Reference Counting و یک Garbage Collector هوشمند، اشیاء و متغیرهایی که دیگر استفاده نمی‌شوند را از حافظه پاک می‌کند تا سرور دچارِ کراش نشود.

۳. سیستمِ تایپِ پویا (Dynamic Typing)

در PHP، متغیرها نوعِ ثابتی ندارند. این انعطاف‌پذیری به لطفِ ساختارِ داده‌ای به نام zval (Zend Value) ممکن شده است که در هر لحظه می‌تواند اطلاعاتی درباره نوع و مقدارِ داده را در خود نگه دارد.

نکته مهندسی: برایِ افزایشِ چشمگیرِ سرعتِ برنامه‌هایِ PHP، همیشه از OPcache استفاده کنید. این قابلیت باعث می‌شود کدهایِ کامپایل شده (OpCodes) در RAM ذخیره شوند و در درخواست‌های بعدی نیاز به کامپایلِ مجدد نباشد.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

وارونه کردن متن Easy
سوال تمرین

تابع مناسبی را برای معکوس کردن رشته‌یِ "PHP" بنویسید (خروجی باید PHP وارونه باشد).

پاسخ تمرین
PHP
<?php
echo strrev("PHP");
?>

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.