将我的服务器升级到 PHP 7.3 后,我开始看到以下警告:
PHP 已弃用:stripos():将来非字符串指针将被解释为字符串。使用显式 chr() 调用来保留当前行为...
参考以下代码:
if (stripos($checkforcomma, "," !== 0))
为什么它将逗号视为字符串字符以外的东西?按照错误消息中的建议,chr(44) 将输出一个逗号,事实上,当我将 "," 换成 chr(44) 时,会生成完全相同的错误消息。
正如 Jeto 对您的问题所评论的那样,解决此问题的方法是将错字更正为
if (stripos($checkforcomma, ",") !== 0)
我认为值得指出的是,修复此错字以停止弃用通知将改变您的程序的工作方式。使用当前代码,即使没有警告,它也没有做它打算做的事情。
您正在有效地检查chr(1)
字符串而不是逗号,因为"," != 0
计算结果为true
,它将被转换为 int 1 以在 stripos 中使用。
除非您有时在某些字符串chr(1)
中间有 a ,否则应该在其中发生的任何事情都不会发生,因此在您修复错字之后,您的程序将更有可能执行以前可能从未运行过的代码。假设在此之前一切看起来都正常工作,那可能会导致其他问题。$checkforcomma
if
您可能已经意识到这种可能性,但我认为为将来可能遇到类似问题的人添加一点警告可能会有所帮助。