8
0
$a = 'How are you?';

if ($a contains 'are')
    echo 'true';

فرض کن کد بالا رو دارم، دستور صحیح برای نوشتن if ($a contains 'are') چیه؟

php
0
پاسخ کاربردی

با 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') استفاده کنیم.

ارسال پاسخ به سوال بالا

برای ارسال پاسخ باید وارد اکانتت بشی

اگر پاسخت شامل تکه کدی میشه، از منوی ویرایشگر پایین، تکه کدی که نوشتی رو انتخاب کن و بعد از طریق زبان کدی که نوشتی رو انتخاب کن تا کدت داخل بلاک مخصوص زبان خودش قرار بگیره و کدت خواناتر برای بقیه نشون داده بشه

اگه پاسخت رفرنسی داره، لینک رفرنس رو هم بذار تا پاسختت کاملتر و معتبر تر بشه