php实现strchr
PHP 实现 strchr 函数
PHP 内置的 strchr 函数用于查找字符串中首次出现的指定字符,并返回从该字符到字符串末尾的部分。其功能与 strstr 函数相同。以下是具体实现方法和示例:

基本语法
strchr(string $haystack, mixed $needle, bool $before_needle = false): string|false
$haystack:输入字符串。$needle:要查找的字符或子字符串。如果是数字,会被转为对应的 ASCII 字符。$before_needle:若为true,则返回$needle之前的部分(不包括$needle)。
示例代码
查找字符并返回剩余部分:

$email = 'user@example.com';
$domain = strchr($email, '@');
echo $domain; // 输出: @example.com
查找字符并返回之前的部分:
$email = 'user@example.com';
$user = strchr($email, '@', true);
echo $user; // 输出: user
注意事项
- 如果
$needle未找到,函数返回false。 $needle区分大小写。如需不区分大小写,使用stristr。- 若
$needle为空字符串,PHP 8.0 之前会返回false,PHP 8.0+ 会抛出ValueError。
替代方案
如需自定义实现,可以通过以下方式模拟:
function custom_strchr($haystack, $needle, $before_needle = false) {
$pos = strpos($haystack, $needle);
if ($pos === false) {
return false;
}
return $before_needle
? substr($haystack, 0, $pos)
: substr($haystack, $pos);
}
典型应用场景
- 解析电子邮件地址(分离用户名和域名)。
- 处理文件路径(获取扩展名或目录部分)。
- 字符串分割操作(基于特定分隔符)。
以上内容可直接用于 PHP 5.4+ 版本,兼容性覆盖大多数生产环境。






