Як перевірити, що рядок містить певне слово [PHP]

Привіт:) У цьому пості покажу популярні варіанти на PHP як визначити, що рядок містить задане слово.

Є декілька варіантів вирішення цієї задачі. Розгляну спосіб через використання PHP функцій strpos(), stripos(), mb_strpos() та mb_stripos().

Входження рядка для латинниці

Варіант для регістрозалежних рядків (точне входження):

// Рядок, у якому шукаємо
$str = 'Hello, world!';
// Рядок, який шукаємо
$strSearch = 'world';

if ( strpos( $str, $strSearch ) !== false ) {
    echo 'Містить';
} else {
    echo 'Не містить';
}

Якщо потрібна регістронезалежність:

// Рядок, у якому шукаємо
$str = 'Hello, WORLD!';
// Рядок, який шукаємо
$strSearch = 'world';

if ( stripos( $str, $strSearch ) !== false ) {
    echo 'Містить';
} else {
    echo 'Не містить';
}
до змісту ↑

Входження рядка для кирилиці та юнікоду

Функції вище не завжди можуть спрацювати для кириличних символів. Це залежить від налаштувань серверної частини. А тому краще використовувати спеціальні функції.

Якщо потрібно знайти точне входження:

// Рядок, у якому шукаємо
$str = 'Привіт, світе!';
// Рядок, який шукаємо
$strSearch = 'світ';

if ( mb_strpos( $str, $strSearch ) !== false ) {
    echo 'Містить';
} else {
    echo 'Не містить';
}

Коли не потрібна прив'язка до регістру букв:

// Рядок, у якому шукаємо
$str = 'Привіт, СВІТЕ!';
// Рядок, який шукаємо
$strSearch = 'світ';

if ( mb_stripos( $str, $strSearch ) !== false ) {
    echo 'Містить';
} else {
    echo 'Не містить';
}
У всіх випадках у порівнянні важливо використовувати !==, а не !=. Все діло в тому, що strpos() поверне 0 — нульову позицію, якщо відразу знайде збіг. Відповідно 0 приведеться до false, якщо порівнювати нестрого.
Якщо при використанні функцій mb_strpos() та mb_stripos() виникне помилка "Uncaught Error: Call to undefined function mb_stripos", це означає, що ці функції не встановлені. Їх потрібно додати на сервері.

Михайло Петров
Михайло Петров

Мене звати Михайло. Я — WordPress-розробник. Створюю візитки, корпоративні сайти, блоги на WordPress.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *