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 не найден.
Простой пример
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 — это следует проверять через ===.