我在一个旧的遗留代码库中偶然发现了一个关于strstr的问题。有很多代码,但基本上测试用例可以归结为:
$value = 2660;
$link = 'affiliateid=1449&zoneid=6011&placement_id=11736&publisher_id=1449&period_preset=yesterday&period_start=2017-03-27&period_end=2017-03-27';
var_dump(strstr($link, $value));
我预计这将返回false
,因为"2660“不在字符串中,但它返回d=1449&zoneid=6011&placement_id=11736&publisher_id=1449&period_preset=yesterday&period_start=2017-03-27&period_end=2017-03-27
。
我意识到$value
应该是一个字符串,但我仍然不明白为什么PHP没有将它转换为字符串,也不明白为什么它会在链接中找到这个数字。
实际上,如果我尝试使用$value = '2660';
,它会像预期的那样返回false
。
知道发生了什么吗?
发布于 2017-03-28 18:13:51
我想这回答了你的问题:
针
如果指针不是字符串,则将其转换为整数并作为字符的序号值应用。
http://php.net/manual/en/function.strstr.php
由于注释而进行编辑:
chr(2660)
返回字符d
,这确实是大海捞针,这就是为什么它不会像您预期的那样返回false。
https://stackoverflow.com/questions/43066697
复制相似问题