Основы 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)