Home >Backend Development >PHP Tutorial >strrchr后输出结果不同

strrchr后输出结果不同

WBOY
WBOYOriginal
2016-06-06 20:20:001337browse

<code>$str1 = "test:http://google.com,http://hbaidu.com";
$str2 = strrchr($str1,"http://");
echo $str2;</code>

输出结果应该是:

<code>http://hbaidu.com</code>

但是为什么输出结果是:

<code>baidu.com</code>

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

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

结果输出是:

<code>http://baidu.com</code>

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

回复内容:

<code>$str1 = "test:http://google.com,http://hbaidu.com";
$str2 = strrchr($str1,"http://");
echo $str2;</code>

输出结果应该是:

<code>http://hbaidu.com</code>

但是为什么输出结果是:

<code>baidu.com</code>

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

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

结果输出是:

<code>http://baidu.com</code>

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

建议先看看 strrchr 的文档

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

<code>string strrchr ( string $haystack , mixed $needle )
</code>

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

haystack
在该字符串中查找。

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

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

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn