相关疑难解决方法(0)

迁移到 PHP 8.1 - 如何修复已弃用的将 null 传递给参数错误 - 重命名函数中的构建

PHP 8.1 已弃用将null参数传递给许多核心函数。我的主要问题是像htmlspecialchars(php)and 这样的函数trim(php),它null不再默默地转换为空字符串。

为了在不使用大量代码的情况下解决这个问题,我试图重命名原始的内置函数,并将它们替换为将输入转换为null(空)字符串的包装器。

我使用这种方法的主要问题是,该功能rename_function(PECL apd)不再起作用,最后一次更新是从 2004 1开始。

我需要对内置函数进行某种重写,以避免每次调用函数时都编写空检查,从而使我的所有代码变大两倍。

我能想到的唯一其他解决方案是仅使用我的自定义函数,但这仍然需要遍历我拥有的所有代码和第三方库。

在 PHP 8.1 中,当将 null 传递给内置函数时,它不再默默地转换为空字符串。


  1. https://pecl.php.net/package/apd

migration null deprecated php-8.1

80
推荐指数
4
解决办法
16万
查看次数

PHP str_split 和 UTF8 波兰语字符

我在用 utf-8 波兰字符拆分单词时遇到问题。

我一直在检查 php 文档中的 str_split,但没有设置字符集的参数。

我有字:“ma?a” 我必须用字母分割它以用跨度包装每个单个字母并在结果中返回 html 字符串。

str_split('ma?a') 的结果:

array:5 [
  0 => "m"
  1 => "a"
  2 => b"Å"
  3 => b"‚"
  4 => "a"
]
Run Code Online (Sandbox Code Playgroud)

json_last_error_message() 返回“格式错误的 UTF-8 字符,可能编码不正确”错误,所以我认为这是与波兰语字母相关的问题,但我找不到设置 str_split 字符集的方法。

这是要进行 JSON 编码的准备好的数组:

array:2 [
  "pieces" => array:6 [
    0 => "<span class="dropable">m</span><span class="dropable">a</span><span class="dropable">m</span><span class="dropable">a</span>"
    1 => "<span class="dropable">m</span><span class="dropable">a</span><span class="dropable">s</span><span class="dropable">a</span>"
    2 => "<span class="dropable">m</span><span class="dropable">a</span><span class="dropable">p</span><span class="dropable">a</span>"
    3 => b"<span class="dropable">m</span><span class="dropable">a</span><span class="dropable">Å</span><span class="dropable">‚</span><span class="dropable">a</span>" …
Run Code Online (Sandbox Code Playgroud)

php utf-8

3
推荐指数
1
解决办法
4450
查看次数

标签 统计

deprecated ×1

migration ×1

null ×1

php ×1

php-8.1 ×1

utf-8 ×1