رشته یا String یکی از مهمترین انواع داده در PHP است. تقریباً در هر پروژه PHP با رشتهها سروکار داریم؛ از نام و ایمیل کاربران گرفته تا عنوان محصولات، پیامهای خطا، URLها، محتوای مقالات، اطلاعات فرمها و دادههای دریافتی از API.
برای مثال:
$name = "Ali";
در اینجا مقدار "Ali" یک String است.
یا:
$message = "Welcome to PHP";
رشتهها در PHP فقط برای ذخیره متن استفاده نمیشوند. شما میتوانید آنها را جستجو کنید، برش دهید، جایگزین کنید، به حروف بزرگ یا کوچک تبدیل کنید، با یکدیگر ترکیب کنید و حتی آنها را به Array تبدیل کنید.
در این آموزش با مفهوم String در PHP، روش ساخت رشته، تفاوت کوتیشنها، اتصال رشتهها، مهمترین توابع String و روشهای پردازش متن در PHP آشنا میشویم.
# String یا رشته در PHP چیست؟
String در PHP مجموعهای از کاراکترهاست که به عنوان یک مقدار متنی ذخیره میشود.
مثلاً:
$name = "Saeed";
یا:
$title = "آموزش برنامه نویسی PHP";
هر دو مقدار از نوع String هستند.
برای بررسی نوع یک متغیر میتوان از gettype() استفاده کرد:
$name = "Ali";
echo gettype($name);
خروجی:
string
# ساخت String در PHP
رشتهها را میتوان با Single Quote یا Double Quote ایجاد کرد.
استفاده از Single Quote
$name = 'Ali';
استفاده از Double Quote
$name = "Ali";
هر دو یک String ایجاد میکنند، اما در نحوه پردازش متغیرها و Escape Sequenceها تفاوتهایی دارند.
# تفاوت Single Quote و Double Quote در PHP
یکی از تفاوتهای مهم این دو Syntax، نحوه پردازش Variableهاست.
مثلاً:
$name = "Ali";
echo 'Hello $name';
خروجی:
Hello $name
اما:
echo "Hello $name";
خروجی:
Hello Ali
بنابراین Double Quote میتواند Variableها را داخل String تفسیر کند.
# اتصال رشتهها در PHP
برای اتصال Stringها در PHP از عملگر . استفاده میشود.
مثلاً:
$firstName = "Ali";
$lastName = "Ahmadi";
$fullName = $firstName . " " . $lastName;
echo $fullName;
خروجی:
Ali Ahmadi
این روش یکی از پایهایترین تکنیکهای کار با String در PHP است.
# اتصال رشته با Assignment Operator
میتوان یک String را با استفاده از .= به مقدار قبلی اضافه کرد.
$message = "Hello";
$message .= " Ali";
$message .= "!";
echo $message;
خروجی:
Hello Ali!
این روش زمانی مفید است که بخواهیم یک String را مرحلهبهمرحله بسازیم.
# استفاده از Variable داخل String
در Double Quote میتوان Variable را مستقیماً داخل String قرار داد:
$name = "Ali";
echo "Hello $name";
یا برای خوانایی بیشتر:
echo "Hello {$name}";
استفاده از {} در رشتههای پیچیدهتر میتواند خوانایی کد را بهتر کند.
# Escape Character در PHP
گاهی لازم است کاراکترهایی مانند کوتیشن را داخل یک String قرار دهیم.
مثلاً:
$message = "He said \"Hello\"";
خروجی:
He said "Hello"
در Single Quote نیز میتوان کوتیشن مربوطه را Escape کرد:
$message = 'It\'s PHP';
# New Line در String
برای ایجاد خط جدید در رشتههای Double Quote میتوان از \n استفاده کرد:
$text = "Hello\nPHP";
البته \n در محیطهای مختلف ممکن است نحوه نمایش متفاوتی داشته باشد. برای خروجی HTML معمولاً باید از HTML مناسب مانند <br> استفاده کنید.
# Heredoc در PHP
برای ایجاد رشتههای چندخطی میتوان از Heredoc استفاده کرد.
$text = <<<TEXT
سلام
به آموزش PHP خوش آمدید.
TEXT;
echo $text;
Heredoc زمانی کاربرد دارد که String طولانی یا چندخطی داشته باشیم.
# Nowdoc در PHP
Nowdoc از نظر Syntax شبیه Heredoc است، اما محتوای آن مانند Single Quote پردازش میشود.
$text = <<<'TEXT'
Hello $name
TEXT;
echo $text;
در این حالت $name به عنوان Variable پردازش نمیشود.
# محاسبه طول String با strlen
یکی از پرکاربردترین توابع رشته در PHP، strlen() است.
این Function طول String را برمیگرداند.
$text = "Hello";
echo strlen($text);
خروجی:
5
اما هنگام کار با متن فارسی باید به موضوع Encoding توجه داشته باشید.
# strlen و متن فارسی
strlen() طول را بر اساس Byte محاسبه میکند، نه لزوماً تعداد کاراکترهای قابل مشاهده.
بنابراین برای متن UTF-8 فارسی معمولاً بهتر است از mb_strlen() استفاده شود:
$text = "سلام";
echo mb_strlen($text);
در این حالت تعداد کاراکترهای متنی موردنظر را دریافت میکنیم.
برای پروژههای فارسی، این نکته اهمیت زیادی دارد.
# تبدیل String به حروف کوچک و بزرگ
برای تبدیل حروف انگلیسی به حروف کوچک میتوان از:
strtolower()
استفاده کرد.
مثلاً:
$text = "HELLO PHP";
echo strtolower($text);
خروجی:
hello php
برای تبدیل به حروف بزرگ:
$text = "hello php";
echo strtoupper($text);
خروجی:
HELLO PHP
# تبدیل حروف فارسی و Unicode
توابع سادهای مانند strtolower() و strtoupper() برای تمام نیازهای متون Unicode مناسب نیستند.
برای پردازش صحیح متنهای چندزبانه، مخصوصاً فارسی، معمولاً باید از توابع mb_* مانند:
mb_strtolower()
و:
mb_strtoupper()
استفاده کرد.
# حذف فاصلههای اضافی با trim
برای حذف فاصلههای ابتدا و انتهای String از trim() استفاده میشود:
$name = " Ali ";
$name = trim($name);
echo $name;
نتیجه:
Ali
این Function هنگام پردازش اطلاعات فرمها بسیار کاربردی است.
# حذف فاصله از سمت چپ و راست
برای حذف کاراکترهای اضافی از سمت چپ:
ltrim()
و برای سمت راست:
rtrim()
استفاده میشود.
مثلاً:
$text = " PHP ";
echo ltrim($text);
# جستجو در String با strpos
برای پیدا کردن موقعیت یک String در String دیگر میتوان از strpos() استفاده کرد.
$text = "I love PHP";
$position = strpos($text, "PHP");
echo $position;
اگر عبارت پیدا شود، موقعیت آن برگردانده میشود.
نکته بسیار مهم این است که strpos() ممکن است مقدار 0 برگرداند. بنابراین این روش اشتباه است:
if (strpos($text, "I")) {
// ...
}
بهتر است نتیجه را به صورت Strict بررسی کنیم:
if (strpos($text, "I") !== false) {
echo "پیدا شد";
}
# جستجوی چندبایتی با mb_strpos
برای متنهای Unicode مانند فارسی بهتر است در صورت نیاز از:
mb_strpos()
استفاده شود.
مثلاً:
$text = "آموزش PHP";
$position = mb_strpos($text, "PHP");
این موضوع برای پردازش صحیح متن فارسی اهمیت دارد.
# بررسی وجود یک String
میتوان از str_contains() برای بررسی وجود یک عبارت در String استفاده کرد.
$text = "I love PHP";
if (str_contains($text, "PHP")) {
echo "PHP پیدا شد";
}
این روش برای سناریوهایی که فقط میخواهیم بدانیم یک عبارت وجود دارد یا خیر، خواناتر از strpos() است.
# برش String با substr
برای استخراج بخشی از String از substr() استفاده میشود.
$text = "Hello PHP";
echo substr($text, 0, 5);
خروجی:
Hello
ساختار کلی:
substr($string, $start, $length);
پارامترها:
$string→ رشته اصلی$start→ نقطه شروع$length→ تعداد کاراکترهای موردنظر
# برش متن فارسی
برای متنهای UTF-8 بهتر است به جای substr() در صورت نیاز از:
mb_substr()
استفاده کنید.
مثلاً:
$text = "آموزش برنامه نویسی PHP";
echo mb_substr($text, 0, 7);
این روش برای کار با متن فارسی مناسبتر است.
# جایگزینی متن با str_replace
یکی از پرکاربردترین توابع String در PHP، str_replace() است.
مثلاً:
$text = "I love JavaScript";
$text = str_replace("JavaScript", "PHP", $text);
echo $text;
خروجی:
I love PHP
# جایگزینی چند مقدار
میتوان چند مقدار را همزمان جایگزین کرد:
$text = "PHP JavaScript Python";
$text = str_replace(
["PHP", "JavaScript"],
["Laravel", "Vue"],
$text
);
# جایگزینی حساس به Case
str_replace() نسبت به حروف بزرگ و کوچک حساس است.
برای جایگزینی بدون حساسیت به Case میتوان در سناریوهای مناسب از:
str_ireplace()
استفاده کرد.
# تبدیل String به Array با explode
اگر یک String شامل چند مقدار جداشده باشد، میتوان از explode() استفاده کرد.
$tags = "PHP,Laravel,MySQL";
$result = explode(",", $tags);
print_r($result);
نتیجه:
Array
(
[0] => PHP
[1] => Laravel
[2] => MySQL
)
این Function در پردازش CSVهای ساده، Tagها و دادههای جداشده بسیار کاربردی است.
# تبدیل Array به String با implode
برعکس explode()، تابع implode() عناصر Array را به String تبدیل میکند.
$tags = ["PHP", "Laravel", "MySQL"];
$result = implode(", ", $tags);
echo $result;
خروجی:
PHP, Laravel, MySQL
# بررسی شروع String با str_starts_with
در PHP میتوان بررسی کرد که یک String با عبارت مشخصی شروع میشود یا خیر:
$url = "https://example.com";
if (str_starts_with($url, "https://")) {
echo "URL امن است";
}
# بررسی پایان String با str_ends_with
برای بررسی پایان String:
$file = "image.jpg";
if (str_ends_with($file, ".jpg")) {
echo "فایل JPG است";
}
# مقایسه رشتهها در PHP
برای مقایسه Stringها میتوان از === استفاده کرد:
$a = "PHP";
$b = "PHP";
if ($a === $b) {
echo "برابر هستند";
}
استفاده از === باعث میشود مقدار و نوع داده هر دو بررسی شوند.
# تفاوت == و === در String
به صورت کلی:
==
مقایسه غیر Strict انجام میدهد، در حالی که:
===
مقایسه Strict انجام میدهد.
در کدهای حساس بهتر است تفاوت این دو را در نظر بگیرید و در صورت نیاز از مقایسه Strict استفاده کنید.
# مقایسه حساس به حروف با strcmp
برای مقایسه دو String میتوان از strcmp() استفاده کرد:
$result = strcmp("PHP", "PHP");
اگر دو String برابر باشند، نتیجه 0 خواهد بود.
برای مقایسه بدون حساسیت به Case میتوان از strcasecmp() استفاده کرد.
# تبدیل String به حروف مناسب برای URL
در پروژههای وب گاهی نیاز داریم متن را به یک مقدار مناسب برای URL تبدیل کنیم.
برای مثال:
آموزش PHP
ممکن است به یک Slug مانند:
amoozesh-php
تبدیل شود.
PHP به صورت مستقیم یک تابع کامل برای تبدیل متن فارسی به Slug مناسب پروژه شما ارائه نمیکند و در پروژههای واقعی معمولاً این کار با یک منطق اختصاصی، کتابخانه یا امکانات Framework انجام میشود.
در Laravel نیز برای ساخت Slug میتوان از روشهای مختلفی استفاده کرد.
# پاکسازی String
در پروژههای واقعی ممکن است دادهای که از کاربر دریافت میکنیم شامل فاصله یا ساختار نامناسب باشد.
مثلاً:
$email = " user@example.com ";
$email = trim($email);
سپس میتوان آن را Validation کرد.
نکته مهم این است که پاکسازی String جایگزین Validation و Security نیست. داده ورودی کاربر باید متناسب با کاربرد آن اعتبارسنجی و در محل استفاده نیز به شکل مناسب Escape یا Encode شود.
# جلوگیری از XSS هنگام نمایش String
اگر String از کاربر دریافت شده باشد، نباید آن را بدون بررسی مستقیماً داخل HTML قرار دهیم.
مثلاً در PHP میتوان هنگام خروجی HTML از:
echo htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
استفاده کرد.
این موضوع برای جلوگیری از حملات XSS هنگام نمایش دادههای کنترلنشده در HTML اهمیت دارد.
# تفاوت پردازش String و Validation
این دو موضوع را نباید با یکدیگر اشتباه گرفت.
مثلاً:
$email = trim($_POST["email"]);
فقط فاصلههای اضافی را حذف میکند.
اما برای بررسی معتبر بودن Email باید Validation انجام شود:
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "ایمیل معتبر است";
}
بنابراین:
String Processing ≠ Validation
# استفاده از Regular Expression برای String
برای پردازشهای پیچیدهتر میتوان از Regular Expression استفاده کرد.
در PHP توابعی مانند:
preg_match()
و:
preg_replace()
برای این کار وجود دارند.
مثلاً:
$text = "PHP 123";
if (preg_match('/PHP/', $text)) {
echo "PHP پیدا شد";
}
Regex برای کارهایی مانند استخراج الگوهای خاص، اعتبارسنجیهای پیچیده و جایگزینی Patternها بسیار قدرتمند است.
# تبدیل String به JSON
در پروژههای API معمولاً با JSON سروکار داریم.
برای تبدیل داده PHP به JSON:
$data = [
"name" => "Ali",
"language" => "PHP"
];
$json = json_encode($data);
echo $json;
خروجی:
{"name":"Ali","language":"PHP"}
برای دادههای فارسی بهتر است Encoding مناسب را نیز در نظر بگیریم. json_encode() در نسخههای جدید PHP برای Unicode امکانات مناسبی دارد و در صورت نیاز میتوان از گزینههایی مانند JSON_UNESCAPED_UNICODE استفاده کرد.
مثلاً:
$json = json_encode(
$data,
JSON_UNESCAPED_UNICODE
);
# خواندن String از JSON
برای تبدیل JSON به داده PHP میتوان از json_decode() استفاده کرد:
$json = '{"name":"Ali","language":"PHP"}';
$data = json_decode($json, true);
echo $data["name"];
در اینجا پارامتر true باعث میشود نتیجه به صورت Associative Array برگردد.
# String در فرمهای PHP
یکی از مهمترین کاربردهای String در PHP، دریافت اطلاعات فرم است.
فرض کنید فرم شامل نام کاربر باشد:
<input type="text" name="name">
در PHP میتوان داده را دریافت کرد:
$name = $_POST['name'] ?? '';
سپس قبل از پردازش یا نمایش، بسته به کاربرد باید Validation و پردازش مناسب انجام شود.
مثلاً:
$name = trim($name);
و هنگام نمایش در HTML:
echo htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
# String و Database
در پروژههای PHP، Stringها معمولاً از Database دریافت یا در Database ذخیره میشوند.
مثلاً:
name
email
title
description
slug
همگی میتوانند داده متنی باشند.
هنگام ذخیره داده در Database نباید Stringها را با Concatenation مستقیم وارد SQL کنیم.
روش صحیح استفاده از Prepared Statement است.
این موضوع بهخصوص برای جلوگیری از SQL Injection اهمیت دارد.
# String در Laravel
اگر PHP را یاد گرفته باشید، در Laravel نیز مرتب با Stringها سروکار خواهید داشت.
برای مثال:
- نام کاربران
- URLها
- Slugها
- پیامها
- دادههای Request
- پاسخ API
- دادههای Database
- فایلها
- Notificationها
همگی میتوانند شامل String باشند.
Laravel همچنین ابزارها و Helperهای مختلفی برای کار با Stringها در اختیار توسعهدهنده قرار میدهد.
# مهمترین توابع String در PHP
در جدول زیر تعدادی از مهمترین توابع کار با رشته در PHP را مشاهده میکنید:
| تابع | کاربرد |
|---|---|
strlen() | محاسبه طول String |
mb_strlen() | محاسبه طول رشتههای چندبایتی |
strtolower() | تبدیل حروف انگلیسی به کوچک |
strtoupper() | تبدیل حروف انگلیسی به بزرگ |
mb_strtolower() | تبدیل Unicode به حروف کوچک |
mb_strtoupper() | تبدیل Unicode به حروف بزرگ |
trim() | حذف فاصله ابتدا و انتها |
ltrim() | حذف از سمت چپ |
rtrim() | حذف از سمت راست |
strpos() | پیدا کردن موقعیت String |
mb_strpos() | جستجوی چندبایتی |
str_contains() | بررسی وجود عبارت |
str_starts_with() | بررسی شروع String |
str_ends_with() | بررسی پایان String |
substr() | برش String |
mb_substr() | برش رشته چندبایتی |
str_replace() | جایگزینی متن |
str_ireplace() | جایگزینی بدون حساسیت به Case |
explode() | تبدیل String به Array |
implode() | تبدیل Array به String |
strcmp() | مقایسه String |
strcasecmp() | مقایسه بدون حساسیت به Case |
preg_match() | جستجو با Regular Expression |
preg_replace() | جایگزینی با Regular Expression |
# نمونه کاربردی ترکیبی
فرض کنید اطلاعات زیر را داریم:
$name = " Ali Ahmadi ";
$skills = "PHP,Laravel,MySQL";
ابتدا نام را پاکسازی میکنیم:
$name = trim($name);
سپس مهارتها را به Array تبدیل میکنیم:
$skills = explode(",", $skills);
اکنون:
print_r($skills);
نتیجه:
Array
(
[0] => PHP
[1] => Laravel
[2] => MySQL
)
در مرحله بعد میتوانیم این دادهها را پردازش کنیم.
این الگو در پروژههای واقعی بسیار رایج است:
Input
↓
String Processing
↓
Validation
↓
Business Logic
↓
Database / API
↓
Output
# نکات مهم هنگام کار با String در PHP
هنگام کار حرفهای با رشتهها چند نکته را همیشه در نظر داشته باشید:
۱. برای متن فارسی Encoding را جدی بگیرید
برای بسیاری از عملیات متنی فارسی، توابع mb_* انتخاب مناسبتری هستند.
۲. داده کاربر را بدون بررسی نمایش ندهید
برای خروجی HTML معمولاً باید Escape مناسب انجام شود.
۳. String Processing را با Validation اشتباه نگیرید
trim() به معنی معتبر بودن داده نیست.
۴. برای SQL از String Concatenation استفاده نکنید
از Prepared Statement یا ابزارهای مناسب Database استفاده کنید.
۵. برای دادههای حجیم به مصرف حافظه توجه کنید
پردازش Stringهای بسیار بزرگ میتواند مصرف حافظه را افزایش دهد.
۶. برای پردازش پیچیده از Regex با دقت استفاده کنید
Regular Expression بسیار قدرتمند است اما Patternهای پیچیده میتوانند نگهداری کد را دشوار کنند.
# جمعبندی
String در PHP یکی از مهمترین بخشهای زبان PHP است و تقریباً تمام برنامههای وب به نحوی با رشتهها سروکار دارند.
در این آموزش یاد گرفتیم:
- String در PHP چیست.
- چگونه String ایجاد کنیم.
- تفاوت Single Quote و Double Quote چیست.
- چگونه Stringها را به یکدیگر متصل کنیم.
- چگونه طول String را محاسبه کنیم.
- چگونه متن را جستجو کنیم.
- چگونه بخشی از String را استخراج کنیم.
- چگونه متن را جایگزین کنیم.
- چگونه String را به Array تبدیل کنیم.
- چگونه Array را به String تبدیل کنیم.
- چگونه با متن فارسی و Unicode کار کنیم.
- چگونه از Regular Expression استفاده کنیم.
- چگونه دادههای String را برای نمایش در HTML ایمنتر کنیم.
- String چه ارتباطی با JSON، Database و Laravel دارد.
اگر مسیر یادگیری PHP را دنبال میکنید، بعد از یادگیری String بهتر است سراغ کار با تاریخ و زمان در PHP بروید؛ زیرا تاریخ و زمان نیز یکی از بخشهای بسیار پرکاربرد در پروژههای واقعی PHP، فروشگاهها، سیستمهای رزرو، گزارشگیری و APIها است.
# سوالات متداول درباره String در PHP
String در PHP چیست؟
String نوع دادهای برای ذخیره و پردازش اطلاعات متنی در PHP است.
چگونه طول یک String را در PHP پیدا کنیم؟
برای Stringهای معمولی میتوان از strlen() استفاده کرد و برای متنهای چندبایتی مانند فارسی، در بسیاری از موارد mb_strlen() انتخاب مناسبتری است.
چگونه دو String را در PHP به هم متصل کنیم؟
با استفاده از عملگر .:
$fullName = $firstName . " " . $lastName;
تفاوت strlen و mb_strlen چیست؟
strlen() طول را بر اساس Byte محاسبه میکند، در حالی که mb_strlen() برای رشتههای چندبایتی و Unicode مناسبتر است.
چگونه بخشی از یک String را جدا کنیم؟
برای رشتههای معمولی میتوان از substr() و برای متنهای چندبایتی از mb_substr() استفاده کرد.
چگونه یک عبارت را در String پیدا کنیم؟
میتوان از strpos() یا در سناریوهای سادهتر از str_contains() استفاده کرد. برای متن Unicode نیز mb_strpos() گزینه مناسبی است.
چگونه متن را در PHP جایگزین کنیم؟
از str_replace() استفاده میشود:
$text = str_replace("old", "new", $text);
چگونه String را به Array تبدیل کنیم؟
با explode():
$items = explode(",", $text);
چگونه Array را به String تبدیل کنیم؟
با implode():
$text = implode(",", $items);
آیا PHP برای متن فارسی مناسب است؟
بله، اما هنگام کار با متنهای فارسی و Unicode باید Encoding و توابع چندبایتی مانند mb_strlen()، mb_substr() و mb_strpos() را به درستی در نظر گرفت.
# مقالات مرتبط
برای ادامه مسیر یادگیری PHP پیشنهاد میکنیم مقالات زیر را نیز مطالعه کنید:
- PHP چیست و چه کاربردی دارد؟
- آموزش PHP از صفر
- ساختار Syntax در PHP
- متغیرها در PHP
- انواع داده در PHP
- شرطها در PHP
- حلقهها در PHP
- توابع در PHP
- آرایهها در PHP
- کار با تاریخ و زمان در PHP
- کار با JSON در PHP
- کار با فایل در PHP
- Exception در PHP
- Namespace در PHP
- Composer چیست؟
- OOP در PHP





