$a = 'How are you?';
if ($a contains 'are')
echo 'true';
فرض کن کد بالا رو دارم، دستور صحیح برای نوشتن if ($a contains 'are') چیه؟
با PHP 8 میتونی از str_contains برای این کار استفاده کنی:
if (str_contains('How are you', 'are')) {
echo 'true';
}
توجه داشته باش: تابع str_contains همیشه true برمیگردونه اگه $needle (زیررشتهای که میخوای توی رشتهت پیدا کنی) خالی باشه.
$haystack = 'Hello';
$needle = '';
if (str_contains($haystack, $needle)) {
echo "This returned true!";
}
باید اول مطمئن بشی که $needle (زیررشتهت) خالی نباشه.
$haystack = 'How are you?';
$needle = '';
if ($needle !== '' && str_contains($haystack, $needle)) {
echo "This returned true!";
} else {
echo "This returned false!";
}
خروجی: false برگردوند!
همچنین باید توجه کنی که تابع جدید str_contains به حروف بزرگ و کوچک حساسه.
$haystack = 'How are you?';
$needle = 'how';
if ($needle !== '' && str_contains($haystack, $needle)) {
echo "This returned true!";
} else {
echo "This returned false!";
}
خروجی: false برگردوند!
قبل از PHP 8:
میتونی از تابع strpos() استفاده کنی که برای پیدا کردن وجود یه رشته داخل رشته دیگه به کار میره:
$haystack = 'How are you?';
$needle = 'are';
if (strpos($haystack, $needle) !== false) {
echo 'true';
}
توجه داشته باش که استفاده از !== false عمدی هست (نه != false و نه === true نتیجه مورد نظر رو نمیدن)؛ تابع strpos() یا موقعیت شروع رشته جستجو شده رو در رشته اصلی برمیگردونه، یا false رو اگه رشته پیدا نشه. از اونجایی که 0 یک موقعیت معتبر هست و 0 به عنوان "falsey" در نظر گرفته میشه، نمیتونیم از ساختارهای سادهتری مثل !strpos($a, 'are') استفاده کنیم.