php strstr 函数实现
PHP strstr 函数实现
strstr 是 PHP 中用于查找字符串首次出现的函数,返回从匹配位置开始到字符串末尾的部分。以下是其实现原理及自定义实现方法。
函数原型
strstr(string $haystack, string $needle, bool $before_needle = false): string|false
$haystack:被搜索的字符串。$needle:要查找的子字符串。$before_needle:若为true,返回$needle之前的部分。
自定义实现
以下是一个模拟 strstr 功能的实现:
function my_strstr($haystack, $needle, $before_needle = false) {
if (empty($needle)) {
return false;
}
$pos = strpos($haystack, $needle);
if ($pos === false) {
return false;
}
if ($before_needle) {
return substr($haystack, 0, $pos);
} else {
return substr($haystack, $pos);
}
}
实现解析
- 参数校验:检查
$needle是否为空,若为空直接返回false。 - 查找位置:使用
strpos获取$needle在$haystack中的首次出现位置。 - 结果处理:根据
$before_needle参数决定返回匹配位置之前或之后的部分。
使用示例
$text = "Hello, world!";
echo my_strstr($text, "world"); // 输出 "world!"
echo my_strstr($text, "world", true); // 输出 "Hello, "
注意事项
- 实际 PHP 源码中的
strstr是通过 C 语言实现的,效率更高。 - 此实现未处理多字节字符(如 UTF-8),需结合
mb_strstr处理此类场景。







