php - strrchr后输出结果不同
巴扎黑
巴扎黑 2017-04-10 16:40:59
[PHP讨论组]
$str1 = "test:http://google.com,http://hbaidu.com";
$str2 = strrchr($str1,"http://");
echo $str2;

输出结果应该是:

http://hbaidu.com

但是为什么输出结果是:

baidu.com

如果把代码中http://hbaidu.com的h去掉

$str1 = "test:http://google.com,http://baidu.com";
$str2 = strrchr($str1,"http://");
echo $str2;

结果输出是:

http://baidu.com

请问各位大神这是为什么?谢谢

巴扎黑
巴扎黑

全部回复(1)
天蓬老师

建议先看看 strrchr 的文档

http://php.net/manual/zh/function.strrchr.php

string strrchr ( string $haystack , mixed $needle )

该函数返回 haystack 字符串中的一部分,这部分以 needle 的最后出现位置开始,直到 haystack 末尾。

haystack
在该字符串中查找。

needle
如果 needle 包含了不止一个字符,那么仅使用第一个字符。该行为不同于 strstr()。
如果 needle 不是一个字符串,那么将被转化为整型并被视为字符顺序值。

也就是说,后面的参数只识别第一个字符, 也就是只识别你的 hh 之后的参数全部忽略。如果要使用字符串,需要换用 strpos 等其他支持字符串查询的函数。

(注:楼上的说明也是不准确的,这个和 trim 也不一样,strrchr 只识别第一个字符,其他的字符无效,而不是一个个尝试)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号