首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解strrchr函数

理解strrchr函数
EN

Stack Overflow用户
提问于 2014-09-28 21:43:58
回答 3查看 1.2K关注 0票数 6

我正在使用strrchr函数进行一些测试,但我无法理解输出:

代码语言:javascript
复制
$text = 'This is my code';
echo strrchr($text, 'my');
//my code

好的,函数在上次出现之前返回了字符串。

代码语言:javascript
复制
$text = 'This is a test to test code';
echo strrchr($text, 'test');
//t code

但是在这种情况下,为什么函数返回"t代码“,而不是”测试代码“呢?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-28 22:03:39

来自PHP文档

针 如果针包含多个字符,则只使用第一个字符。这种行为不同于strstr()。

因此,您的第一个示例与以下内容完全相同:

代码语言:javascript
复制
$text = 'This is my code';
echo strrchr($text, 'm');

结果

代码语言:javascript
复制
'This is my code'
         ^
        'my code'

您的第二个示例与以下内容完全相同:

代码语言:javascript
复制
$text = 'This is a test to test code';
echo strrchr($text, 't');

结果

代码语言:javascript
复制
'This is a test to test code'
                      ^
                     't code'

我所做的这个功能实现了你的期望:

代码语言:javascript
复制
/**
 * Give the last occurrence of a string and everything that follows it
 * in another string
 * @param  String $needle   String to find
 * @param  String $haystack Subject
 * @return String           String|empty string
 */
function strrchrExtend($needle, $haystack)
{
    if (preg_match('/(('.$needle.')(?:.(?!\2))*)$/', $haystack, $matches))
        return $matches[0];
    return '';
}

它使用的正则表达式可以在这里进行测试:演示

示例

代码语言:javascript
复制
echo strrchrExtend('test', 'This is a test to test code');

输出

代码语言:javascript
复制
test code
票数 1
EN

Stack Overflow用户

发布于 2014-09-28 21:50:56

很简单!因为它会在字符串中找到字符的最后一次出现。一个字也没说。

它只是找到最后一个出现的字符,然后它将从该位置echo字符串的其余部分。

第一个示例中的

代码语言:javascript
复制
$text = 'This is my code';
echo strrchr($text, 'my');

它找到最后一个m,然后打印包含的重置m本身:my code

第二个示例中的

代码语言:javascript
复制
$text = 'This is a test to test code';
echo strrchr($text, 'test');

它找到最后一个t,并像最后一个示例一样打印其余的:test code

更多信息

票数 2
EN

Stack Overflow用户

发布于 2014-09-28 21:50:42

来自PHP文档:

干草堆要搜索的字符串

针如果针包含多个字符,则只使用第一个。这种行为不同于strstr()。

在您的示例中,只使用针(t)的第一个字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26089966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档