


Блог IT-шника
Блог IT-шника
Привіт:) У цьому пості покажу популярні варіанти на 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", це означає, що ці функції не встановлені. Їх потрібно додати на сервері.