W3docs

strchr()

Статья о функции PHP strchr(), которая находит первое вхождение подстроки в строку и возвращает остаток строки начиная с этого места.

Функция PHP strchr() находит первое вхождение подстроки в строку и возвращает остаток строки начиная с этой позиции. Несмотря на название (отсылающее к функции strchr из языка C), искомый «needle» может состоять из нескольких символов. На этой странице рассматриваются синтаксис, необязательный флаг $before_needle, возвращаемое значение false, которое необходимо проверять, а также связь strchr() с похожими строковыми функциями.

Синтаксис

strchr(string $haystack, string $needle, bool $before_needle = false): string|false

Функция принимает три параметра:

  • $haystack — строка, в которой выполняется поиск.
  • $needle — искомая подстрока. Если она содержит более одного символа, strchr() ищет совпадение целиком.
  • $before_needle (необязательный) — при значении false (по умолчанию) возвращается часть строки начиная с найденного совпадения; при значении true возвращается часть строки до совпадения. Добавлено в PHP 5.3.

Функция возвращает соответствующую часть $haystack в виде строки или false, если $needle не найден.

Простой пример

php— editable, runs on the server

strchr() находит первое "o" в "Hello World" и возвращает остаток строки начиная с этого символа:

o World

Возврат части строки до совпадения

Передайте true третьим аргументом, чтобы получить всё до первого вхождения:

<?php
$string = "Hello World";
$result = strchr($string, "o", true);
echo $result;
?>
Hell

Это удобно для разделения строки по разделителю — например, чтобы получить локальную часть адреса электронной почты, взяв всё до символа "@".

Обработка случая «не найдено»

Если искомый символ отсутствует, strchr() возвращает false, а не пустую строку. Так как false выводится пустой строкой, непроверенный результат может молча привести к пустому выводу, поэтому проверяйте явно:

<?php
$result = strchr("Hello World", "z");
if ($result === false) {
    echo "Not found";
} else {
    echo $result;
}
?>
Not found

Используйте строгое сравнение ===: успешное совпадение может само по себе возвращать строку "0", которую == воспримет как ложное значение.

strchr() и связанные функции

  • strstr()strchr() является просто псевдонимом strstr(); они работают одинаково. strstr() используется чаще.
  • strpos() — возвращает целочисленную позицию первого совпадения (или false), а не саму подстроку. Используйте её, когда нужен индекс для substr() или другой логики, основанной на смещении.
  • substr() — извлекает часть строки по числовому смещению и длине без выполнения поиска.
  • stristr() — регистронезависимый аналог strstr()/strchr().

Итог

strchr() находит первое вхождение needle в строку и возвращает остаток строки (или, при $before_needle равном true, часть до него). Помните, что это псевдоним strstr(), что needle может быть многосимвольной подстрокой, и что при отсутствии совпадения возвращается false — это следует проверять через ===.

Практика

Практика
Что делает функция strchr() в PHP согласно указанному источнику?
Что делает функция strchr() в PHP согласно указанному источнику?
Was this page helpful?