Основы PHP: как найти слово в строке (работа со строками)

Раздел: Основы PHP -> Работа со строками в PHP

Поиск слова в строке PHP: обзор методов

Как проверить, содержит ли строка заданное слово?

Наиболее распространённое решение — функции strpos (возвращает позицию) или str_contains (доступна с PHP 8, возвращает bool). Пример:

<?php
$str = "Изучаем PHP и MySQL";
$word = "PHP";
if (strpos($str, $word) !== false) {
    echo "Слово найдено!";
}
// Для PHP 8+
if (str_contains($str, $word)) {
    echo "Слово найдено!";
}
?>

Php заменить слово (замена слова в строке php)

Слово найдено! Слово найдено!

Php определить кодировку (определение кодировки строки в php (mb_detect_encoding))

Типичная ошибка: использование оператора == вместо ===. Если слово находится в начале строки, strpos возвращает 0, а 0 == false, поэтому проверка не сработает. Всегда применяйте строгое сравнение !== false.

Как найти слово без учёта регистра?

Используйте stripos — регистронезависимый аналог strpos.

<?php
$str = "PHP is great";
$word = "php";
if (stripos($str, $word) !== false) {
    echo "Слово найдено (регистр не важен)";
}
?>

Php размер строки (определение размера строки в php)

stripos работает только с однобайтовыми кодировками. Для UTF-8 используйте mb_stripos.

Как проверить наличие слова с помощью str_contains?

Метод доступен с PHP 8, возвращает true/false, простой синтаксис.

<?php
$str = "Hello world";
if (str_contains($str, "world")) {
    echo "Найдено";
}
?>

Php первое слово (первое слово в строке php)

str_contains чувствителен к регистру. Для регистронезависимого поиска используйте stripos или preg_match с флагом i.

Как найти точное слово, а не часть другого?

Применяйте регулярное выражение с границей слова \b.

<?php
$str = "This is a word processing.";
$word = "word";
if (preg_match('/\b' . preg_quote($word, '/') . '\b/', $str)) {
    echo "Точное слово найдено";
}
?>

поиск слова php (поиск слова в строке php)

Для кириллицы границы \b могут работать некорректно. Используйте модификатор u и экранирование спецсимволов через preg_quote.

Как найти все вхождения слова?

Используйте preg_match_all с тем же шаблоном.

<?php
$str = "PHP and PHP are both PHP.";
preg_match_all('/\bPHP\b/', $str, $matches);
print_r($matches[0]);
?>

Php строка содержит (php строка содержит подстроку)

Array ( [0] => PHP [1] => PHP [2] => PHP )
Если слово может быть частью другого (например, "php" в "phpstorm"), без \b найдутся лишние вхождения. Используйте границы.

Как разбить строку на слова и проверить наличие?

Функция str_word_count возвращает массив слов.

<?php
$str = "PHP is cool";
$words = str_word_count($str, 1);
if (in_array("PHP", $words)) {
    echo "Слово есть";
}
?>
str_word_count не работает с кириллицей по умолчанию. Для русского языка используйте preg_split('/\s+/', $str) или функции mb_*.

Расширенные примеры поиска слова в строке PHP

Пример 1. Поиск всех позиций слова с помощью strpos в цикле
Пример
<?php
$str = "PHP is great. PHP is powerful.";
$word = "PHP";
$offset = 0;
$positions = [];
while (($pos = strpos($str, $word, $offset)) !== false) {
    $positions[] = $pos;
    $offset = $pos + 1;
}
print_r($positions);
?>
Array ( [0] => 0 [1] => 19 )
Пример 2. Замена точного слова с учётом регистра (preg_replace)
Пример
<?php
$str = "The word is important.";
$new = preg_replace('/\bword\b/', 'term', $str);
echo $new; // The term is important.
?>
Пример 3. Подсчёт количества вхождений точного слова (preg_match_all)
Пример
<?php
$str = "one two one three one";
$count = preg_match_all('/\bone\b/', $str);
echo "Количество: $count"; // 3
?>
Пример 4. Поиск слова в многобайтовой строке (mb_strpos)
Пример
<?php
$str = "Привет мир, мир PHP";
$word = "мир";
$pos = mb_strpos($str, $word, 0, 'UTF-8');
if ($pos !== false) {
    echo "Позиция: $pos"; // 7 (с учётом многобайтовых символов)
}
?>
Пример 5. Разбиение строки на слова с помощью регулярного выражения для кириллицы
Пример
<?php
$str = "Привет мир PHP";
$words = preg_split('/\s+/', $str);
print_r($words);
// Альтернатива с setlocale (не всегда надёжно)
setlocale(LC_ALL, 'ru_RU.UTF-8');
$words2 = str_word_count($str, 1);
print_r($words2);
?>
Пример 6. Поиск слова с игнорированием регистра и границами (preg_match)
Пример
<?php
$str = "Php is not the same as PHP.";
if (preg_match('/\bphp\b/i', $str)) {
    echo "Найдено (без учёта регистра)";
}
?>
Пример 7. Проверка наличия слова в массиве строк (array_filter)
Пример
<?php
$strings = ["Hello world", "PHP rules", "Another string"];
$keyword = "PHP";
$filtered = array_filter($strings, function($s) use ($keyword) {
    return str_contains($s, $keyword);
});
print_r($filtered); // [1 => "PHP rules"]
?>

Поиск слова в строке PHP - comments

En
поиск слова php (php)