You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP 8.1迁移后str_replace()空值参数弃用错误如何解决?

问题分析

PHP 8.1 开始严格限制 str_replace() 的参数类型,第三个参数($subject)不再允许传入 null。你的代码中,filter_input(INPUT_GET, 'request') 当不存在 request 这个 GET 参数时会返回 null,直接传入 str_replace() 就触发了弃用警告。

你之前尝试在 str_replace() 参数里用 $url ?? "",但如果代码中存在 HTML 转义的引号(比如示例里的 "")会导致语法错误,无法正确将 null 转为空字符串,所以警告依然存在。

解决代码

<?php
namespace core;

use src\Config;

class Request {

    public static function getUrl() {
        // 提前将$url初始化为非空字符串,避免null传入str_replace
        $url = filter_input(INPUT_GET, 'request') ?? '';
        $url = str_replace(Config::BASE_DIR, '', $url);
        return '/'.$url;
    }

    public static function getMethod() {
        return strtolower($_SERVER['REQUEST_METHOD']);
    }

}

关键说明

  • 在赋值阶段就用 ?? '' 处理 filter_input 的返回值,确保 $url 始终是字符串类型,彻底避免 null 传入 str_replace()。
  • 额外检查 Config::BASE_DIR 的值,如果它是 null,也可能触发类似的参数类型警告,建议确保其为字符串类型。

内容的提问来源于stack exchange,提问作者Patric Oliveira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:50:27