strrchr() 函数返回结果有时不对?

adoms 2014-08-03 02:35:36
手册上的经典例子:
echo strrchr("Hello world!","world");
输出为:world!

但继续尝试会发现这些奇葩结果:
echo strrchr("Hello aaaaworld!","aaaaworld");
输出:aworld!

echo strrchr("Hello cacworld!","cacworld");
输出:cworld!

echo strrchr("abc123cache123","cache");
输出:che123

echo strrchr("cache","cache");
输出:che

等等,总之是会返回不全,总是缺前面几个字符,不知为何??
...全文
145 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
adoms 2014-08-03
  • 打赏
  • 举报
回复
网上的中文资料为: strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。 函数介绍说的是查找字符串,语法介绍第二个参数说的是char,看来还是英文手册比较准确,那么例子为啥不直接用某个字符而弄个字符串world来误导人? 感谢两位的解答。
xuzuning 2014-08-03
  • 打赏
  • 举报
回复
php手册: If needle contains more than one character, only the first is used 如果 needle 包含了不止一个字符,那么仅使用第一个字符。该行为不同于 strstr()。 w3school: 规定要查找的字符。如果该参数是数字,则搜索匹配数字 ASCII 值的字符。 显然后者忽略了“仅使用第一个字符”的说明 但“要查找的字符”和“要查找的字符串”还是有所不同的
果酱很好吃 2014-08-03
  • 打赏
  • 举报
回复
第二个参数: 1、如果包含了不止一个字符,那么仅使用【第一个字符】 2、如果不是一个字符串,那么将被转化为整型并被视为字符顺序值 例:echo strrchr("Hello aaaaworld!","aaaaworld"); 只以a为查找字符串,输出:aworld! 这是对的

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧