2个字符串的PHP错误?

2个字符串的PHP错误?,php,substring,substr,Php,Substring,Substr,给定字符串$s和函数substr(substr($s,1),-1),您可能会希望从前面去掉一个字符,从后面去掉一个字符 这就是运行substr(substr('abc',1),-1)=='b'时得到的结果,如果在ab上运行,则得到b 但是,如果运行substr(substr($s,-1),1)将在两个字符串上获得所需的结果 这在PHP5.5和7.0中也是一样的substr(substr('ab',1),-1): substr('ab',1)returnb,和substr('b',-1)retu

给定字符串
$s
和函数
substr(substr($s,1),-1)
,您可能会希望从前面去掉一个字符,从后面去掉一个字符

这就是运行substr(substr('abc',1),-1)=='b'时得到的结果,如果在
ab
上运行,则得到
b

但是,如果运行
substr(substr($s,-1),1)
将在两个字符串上获得所需的结果


这在PHP5.5和7.0中也是一样的
substr(substr('ab',1),-1)

  • substr('ab',1)
    return
    b
    ,和
    substr('b',-1)
    return
    b
    。为什么?因为,如果
    substr
    的第二个参数为负数,则返回的字符串将从字符串末尾开始的第个字符开始
而使用
substr(substr('ab',-1),1)

  • substr('ab',-1)
    将返回
    b
    ,而
    substr('b',1)
    将返回
    false
    ,因为始终如文档所述:如果字符串长度小于起始字符,将返回false

这里没有bug。

对2个字符串的期望结果是什么?不管是1还是-1,它都是空的,我的意思是我知道了如何绕过它,但这是一种奇怪的行为。您的代码似乎在任何事情上都无法正常工作?给定
$s=“abcdefg”
substr(substr($s,1),-1)
“g”
,而不是
“bcdef”