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)
:
returnsubstr('ab',1)
,和b
returnsubstr('b',-1)
。为什么?因为,如果b
的第二个参数为负数,则返回的字符串将从字符串末尾开始的第个字符开始substr
substr(substr('ab',-1),1)
:
将返回substr('ab',-1)
,而b
将返回substr('b',1)
,因为始终如文档所述:如果字符串长度小于起始字符,将返回falsefalse
这里没有bug。对2个字符串的期望结果是什么?不管是1还是-1,它都是空的,我的意思是我知道了如何绕过它,但这是一种奇怪的行为。您的代码似乎在任何事情上都无法正常工作?给定
$s=“abcdefg”
,substr(substr($s,1),-1)
是“g”
,而不是“bcdef”
。