رشته ها (strings)
یک کاراکتر در زبان پی اچ پی به عنوان یک بایت به حساب می آید و مجموع چند کاراکتر را رشته می نامند. در نتیجه پی اچ پی فقط از مجموعه 256 کاراکتری پشتیبانی می کند. البته مشکلی وجود ندارد که یک رشته خیلی بزرگ شود، پی اچ پی نیز هیچ نوع محدودیتی برای اندازه رشته ندارد، تنها محدودیت موجود مقدار حافظه کامپیوتری است که پی اچ پی بر روی آن نصب شده است.
- نقل قول تکی (single quoted)
- نقل قول دوتایی (double quoted)
- ساختار heredoc
- ساختار nowdoc (که این ساختار از نسخه 5.3.0 به بعد در دسترس است)
آسان ترین راه برای معرفی کردن یک مقدار به صورت رشته آن است که آن را در داخل نقل قول تکی (') قرار دهیم.
در این حالت اگر می خواهید خود علامت نقل قول تکی در داخل رشته نمایش داده شود باید قبل از آن یک علامت / قرار دهید. برای نمایش دادن علامت / نیز باید قبل از آن یک / دیگر قرار دهید، یعنی به این صورت: // . غیر از دوکاراکتر ذکر شده، هر نوع کاراکتر دیگری که بعد از علامت / قرار گیرد هیچ مفهومی نخواهد داشت و همان کاراکتر نمایش داده خواهد شد (به همراه /).
با نگاه کردن مثال های زیر مطلب رو بهتر متوجه خواهید شد:
<?php echo 'یک رشته ساده را نمایش می دهد'; //برای نمایش دادن نقل قول تکی اینگونه عمل کنید //خروجی اینچنین خواهد بود: //Arnold once said: "I'll be back" echo 'Arnold once said: "I\'ll be back"'; // خروجی: You deleted C:\*.*? echo 'You deleted C:\\*.*?'; // خروجی: You deleted C:\*.*? echo 'You deleted C:\*.*?'; // خروجی: This will not expand: \n a newline echo 'This will not expand: \n a newline'; // خروجی: Variables do not $expand $either echo 'Variables do not $expand $either'; ?>
با استفاده از نقل قول دوتایی (") نیز می توان رشته ها را مشخص کرد. در این حالت پی اچ پی کاراکترهای بیشتری را برای استفاده از قواعد نادیده گرفتن (با استفاده از /) می پذیرد.
مهمترین نکته در مورد نقل قول دوتایی در این است که متغیرهایی که داخل نقل قول دوتایی قرار می گیرند، توسط پی اچ پی مورد پردازش قرار خواهند گرفت؛ به عبارت دیگر مقدار نهایی متغیر به عنوان خروجی نمایش داده خواهد شد.
توجه داشته باشید که شناساگر انتخاب شده باید از قواعد نام گذاری مربوط به برچسب های پی اچ پی پیروی کند، یعنی این برچسب باید فقط شامل کاراکتر، عدد، و علامت زیر خط (_) باشد و نباید با کاراکتر عددی یا علامت زیرخط (_) شروع شود.
متن قرار گرفته در داخل ساختار heredoc دقیقا مانند رشته قرار گرفته در داخل نقل قولهای دوتایی است. در داخل این ساختار برای نمایش علامت نقل قول دوتایی (") نیاز به استفاده از بک اسلش نیست. سایر ساختار نادیده گرفتن نیز مانند ساختار ذکر شده در نقل قول دوتایی است.
به مثال زیر توجه کنید:
<?php <<<THE_END متن مورد نظر خود را در این قسمت می نویسیم. متن می تواند شامل چند خط و طولانی باشد. THE_END >
ساختار heredoc از نسخه 4 به بعد پی اچ پی اضافه شده است.
ساختار nowdoc نیز همانند ساختار heredoc است و برای قرار دادن رشته از طریق ساختار nowdoc، ابتدا کاراکترهای <<< قرار می گیرد، سپس شناساگر مورد نظر خود را قرار می دهیم، البته در این ساختار، شناساگر حتما در داخل علامت نقل قول تکی قرار داده می شود. تمامی قوانین مربوط به شناساگرها در heredoc در مورد شناساگرهای استفاده شده در ساختار nowdoc نیز استفاده می شود.
برای درک بهتر این ساختار به مثال زیر توجه کنید:
<?php $str = <<<'THE_END' یک مثال از کاربرد ساختار nowdoc می توان رشته را در چند خط درج کرد THE_END; >ساختار nowdoc از نسخه 5.3.0 به بعد اضافه شده است.
برای قرار دادن متغیرهای در داخل رشته (رشته هایی که با یکی از دو روش بالا معرف شده اند)، دو روش وجود دارد: یکی روش ساده، و دیگری روش پیچیده. روش ساده، همانطور که از نامش نیز برمی آید، بیشتر مورد استفاده قرار می گیرد؛ در این روش یک متغیر، مقدار یک آرایه، یا ویژگی (property) یک شی را به راحتی و با کمترین تلاش در داخل یک رشته قرار می دهیم.
ساختار پیچیده نیز از نسخه 4 به بعد پی اچ پی معرفی شده که با استفاده از علامت آکولاد می توان متغیرها را در داخل رشته استفاده کرد.
به مثال پایین توجه کنید:
<?php $name = "Mehrdad"; echo "Dear user $mehrdad, welcome to TOUK."; ?>خروجی مثال بالا اینچنین خواهد بود:
Dear user Mehrdad, welcome to TOUK.با این روش می توان به نمایه های یک آرایه و همچنین به ویژگی های (property) یک شی دسترسی پیدا کرد.
هر نوع متغیر اسکالر (Scalar)، آرایه یا یک ویژگی(property) از شی را که به صورت متنی ارائه می شود می توان با استفاده از این ساختار در داخل یک رشته قرار داد. خیلی راحت، عبارت را همانطور که در خارج از ساختار متن به کار می برید در داخل دو علامت آکولاد باز و بسته قرار دهید ({}).