php 中 strrchr() 输出的内容解析

strrchr() 函数用于在字符串中找到指定字符最后一次出现的位置。当参数中包含中文时,其输出结果可能令人困惑。

示例 1:

$str1 = "今天不是下雨天,感觉不错哟,没下雨,,,啊";
$res1 = strrchr($str1, "下雨");
echo "$res1 
";
登录后复制

输出:

立即学习“PHP免费学习笔记(深入)”;

下雨,,,啊
登录后复制

此输出符合预期,因为函数找到了字符串中 "下雨" 字符串的最后一个出现位置。

示例 2:

$str2 = "我爱你中国啊中国啊五十几个族啊";
$res2 = strrchr($str2, "中");
echo "$res2 
"; var_dump($res2);
登录后复制

输出:

立即学习“PHP免费学习笔记(深入)”;

个族啊
string '个族啊' (length=9)
登录后复制

解释:

令人惊讶的是,输出的内容是 "个族啊"。这是因为 strrchr() 函数在处理包含中文的参数时,先使用 urlencode() 函数对参数进行编码。编码结果如下:

有我爱中国啊中国啊五十五十族啊
登录后复制

php 将此编码后的字符串视为三个字符,而 strrchr() 函数在参数有多个字符时只使用第一个字符。因此,它找到了 "中" 字符在 "个族啊" 中的位置。

以上就是PHP strrchr()函数处理中文时,为何会出现意想不到的结果?的详细内容,更多请关注慧达安全导航其它相关文章!

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部