gpt4 book ai didi

php - 理解 strrchr 函数

转载 作者:可可西里 更新时间:2023-11-01 13:28:00 32 4
gpt4 key购买 nike

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

$text = 'This is my code';
echo strrchr($text, 'my');
//my code

好的,函数返回最后一次出现之前的字符串

$text = 'This is a test to test code';
echo strrchr($text, 'test');
//t code

但在这种情况下,为什么函数返回“t code”而不是“test code”?

谢谢

最佳答案

来自 PHP documentation :

needle

If needle contains more than one character, only the first is used. This behavior is differentfrom that of strstr().


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

$text = 'This is my code';
echo strrchr($text, 'm');

结果

'This is my code'
^
'my code'

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

$text = 'This is a test to test code';
echo strrchr($text, 't');

结果

'This is a test to test code'
^
't code'

我制作的这个函数可以满足您的期望:

/**
* 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 '';
}

它使用的正则表达式可以在这里测试: DEMO

示例:

echo strrchrExtend('test', 'This is a test to test code');

输出:

test code

关于php - 理解 strrchr 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26089966/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com