# 更新日志

对本扩展的类／函数／方法有以下更新。

Version | Function | Description
--- | --- | ---
8.4.0 | str_getcsv | 现在已弃用依赖 escape 的默认值。
| str_getcsv | 如果 separator、enclosure 或 escape 无效，现在会抛出 ValueError。这模仿了 fgetcsv 和 fputcsv 的行为。
| strcspn | 在 PHP 8.4.0 之前，当 characters 为空字符串时，搜索会错误地停止在 string 的第一个 null 字节处。
8.3.0 | number_format | 新增对 decimals 负值的处理。
| str_getcsv | 如果最后一个字段仅包含未终止的 enclosure，则返回空字符串，而不是带有单个 NULL 字节的字符串。
| strrchr | 新增 before_needle 参数。
| strtok | 现在，当未提供 token 时，会抛出 E_WARNING。
8.2.0 | lcfirst | 大小写转换不在依赖于使用 setlocale 设置的区域。只会转换 ASCII 字符。
| str_ireplace | 大小写转换不在依赖于使用 setlocale 设置的区域。只会进行 ASCII 大小写转换。非 ASCII 字节值将通过它们的字节值进行比较。
| str_split | 如果 string 为空，现在返回空 array。之前返回的 array 包含单个空字符串。
| strcasecmp | 当字符串长度不相等时，此函数不再保证返回 strlen($string1) - strlen($string2)， 而可能返回 -1 或 1。
| strcmp | 当字符串长度不相等时，此函数不再保证返回 strlen($string1) - strlen($string2)， 而可能返回 -1 或 1。
| stripos | 大小写转换不在依赖于使用 setlocale 设置的区域。只会进行 ASCII 大小写转换。非 ASCII 字节值将通过它们的字节值进行比较。
| stristr | 大小写转换不在依赖于使用 setlocale 设置的区域。只会进行 ASCII 大小写转换。非 ASCII 字节值将通过它们的字节值进行比较。
| strnatcasecmp | 当字符串长度不相等时，此函数不再保证返回 strlen($string1) - strlen($string2)， 而可能返回 -1 或 1。
| strnatcmp | 当字符串长度不相等时，此函数不再保证返回 strlen($string1) - strlen($string2)， 而可能返回 -1 或 1。
| strncasecmp | 当字符串长度不相等时，此函数不再保证返回 strlen($string1) - strlen($string2)， 而可能返回 -1 或 1。
| strncmp | 当字符串长度不相等时，此函数不再保证返回 strlen($string1) - strlen($string2)， 而可能返回 -1 或 1。
| strripos | 大小写转换不在依赖于使用 setlocale 设置的区域。只会进行 ASCII 大小写转换。非 ASCII 字节值将通过它们的字节值进行比较。
| strtolower | 大小写转换不在依赖于使用 setlocale 设置的区域。只会转换 ASCII 字符。
| strtoupper | 大小写转换不在依赖于使用 setlocale 设置的区域。只会转换 ASCII 字符。
| substr_compare | 当字符串长度不相等时，此函数不再保证返回 strlen($string1) - strlen($string2)， 而可能返回 -1 或 1。
| ucfirst | 大小写转换不在依赖于使用 setlocale 设置的区域。只会转换 ASCII 字符。
| ucwords | 大小写转换不在依赖于使用 setlocale 设置的区域。只会转换 ASCII 字符。
| utf8_decode | 弃用此函数。
| utf8_encode | 弃用此函数。
8.1.0 | get_html_translation_table | flags 从 ENT_COMPAT 更改为 ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401。
| html_entity_decode | flags changed from ENT_COMPAT to ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401.
| htmlentities | flags 从 ENT_COMPAT 变更为 ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401。
| htmlspecialchars | flags 从 ENT_COMPAT 变更为 ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401。
| htmlspecialchars_decode | flags 从 ENT_COMPAT 变更为ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401。
8.0.0 | convert_cyr_string | 此函数已移除。
| convert_uuencode | 在此版本之前，尝试转换空字符串将返回 false，没有任何特殊原因。
| count_chars | 在此版本之前，函数在失败时返回 false。
| crypt | salt不再可选。
| fprintf | 此函数失败时不再返回 false。
| fprintf | 如果参数个数为零则抛出 ValueError；以前该函数则会发出 E_WARNING。
| fprintf | 如果 [width] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| fprintf | 如果 [precision] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| fprintf | 当传递的参数少于所需的参数时抛出 ArgumentCountError；以前该函数则会发出 E_WARNING。
| hebrevc | 此函数已移除。
| html_entity_decode | encoding is nullable now.
| htmlentities | encoding 现在可以为 null。
| implode | 在 array 之后传递 separator 已不再支持。
| levenshtein | 在此版本之前，必须使用两个或者五个参数调用 levenshtein。
| levenshtein | 在此版本之前，如果某个参数字符串的长度超过 255 个字符，则 levenshtein 将会返回 -1。
| metaphone | The function returned false on failure.
| money_format | 此函数已移除。
| number_format | 在此版本之前，number_format 接受一个、两个或四个参数（不会是三个）。
| parse_str | result 是必须项。
| printf | 此函数失败时不再返回 false。
| printf | 如果参数个数为零则抛出 ValueError；以前该函数则会发出 E_WARNING。
| printf | 如果 [width] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| printf | 如果 [precision] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| printf | 当传递的参数少于所需的参数时抛出 ArgumentCountError；以前该函数则会发出 E_WARNING。
| soundex | Prior to this version, calling the function with an empty string returned false for no particular reason.
| sprintf | 此函数失败时不再返回 false。
| sprintf | 如果参数个数为零则抛出 ValueError；以前该函数则会发出 E_WARNING。
| sprintf | 如果 [width] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| sprintf | 如果 [precision] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| sprintf | 当传递的参数少于所需的参数时抛出 ArgumentCountError；以前该函数则会发出 E_WARNING。
| str_split | 如果 length 小于 1，现在会抛出 ValueError；之前会触发 E_WARNING 级别的错误且函数会返回 false。
| str_word_count | characters 可为空（Nullable）类型。
| strcspn | length 现在允许为 null。
| strip_tags | allowed_tags 允许为 null。
| stripos | needle 现在接受空字符串。
| stripos | 不再支持 int 传递给 needle。
| stristr | needle 现在接受空字符串。
| stristr | 不再支持 int 传递给 needle。
| strpos | needle 现在接受空字符串。
| strpos | 不再支持 int 传入 needle。
| strrchr | needle 现在接受空字符串。
| strrchr | 不再支持将 int 作为 needle 传递。
| strripos | needle 现在接受空字符串。
| strripos | 不再支持将 int 传递给 needle。
| strrpos | needle 现在接受空字符串。
| strrpos | 不再支持将 int 传递给 needle。
| strspn | length 现在允许为 null。
| strstr | needle 现在接受空字符串。
| strstr | 不再支持传递 int 作为 needle。
| substr | 现在 length 允许为 null。当 length 显式设置为 null 时，函数返回在字符串末尾结束的子字符串，而之前将返回空字符串。
| substr | 函数将返回空字符串, 在此之前返回 false。
| substr_compare | length 现在允许为 null。
| substr_count | length 可以为空（nullable）。
| substr_replace | length 现在允许为 null。
| vfprintf | 此函数失败时不再返回 false。
| vfprintf | 如果参数个数为零则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vfprintf | 如果 [width] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vfprintf | 如果 [precision] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vfprintf | 当传递的参数少于所需的参数时抛出 ValueError；以前该函数则会发出 E_WARNING。
| vprintf | 此函数失败时不再返回 false。
| vprintf | 如果参数个数为零则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vprintf | 如果 [width] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vprintf | 如果 [precision] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vprintf | 当传递的参数少于所需的参数时抛出 ValueError；以前该函数则会发出 E_WARNING。
| vsprintf | 此函数失败时不再返回 false。
| vsprintf | 如果参数个数为零则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vsprintf | 如果 [width] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vsprintf | 如果 [precision] 小于零或大于 PHP_INT_MAX，则抛出 ValueError；以前该函数则会发出 E_WARNING。
| vsprintf | 当传递的参数少于所需的参数时抛出 ValueError；以前该函数则会发出 E_WARNING。
| wordwrap | 如果 break 是空字符串，抛出 ValueError；之前此情况会触发 E_WARNING 并且返回 false。
7.4.0 | chr | 此函数不再静默接受不支持的 codepoint，并会将它们转为 0。
| convert_cyr_string | 此函数已废弃。
| hebrevc | 此函数已废弃。
| implode | 在 array 之后传递 separator （即：使用遗留写法）已被废弃。
| money_format | 此函数已废弃。 使用 NumberFormatter::formatCurrency 替代。
| str_getcsv | escape 现在将空字符串视为禁用专有转义机制的信号。以前视为默认参数值。
| strip_tags | allowed_tags 现在可以接受 array。
7.3.5 | substr_compare | offset 现在可能等于 haystack。
7.3.0 | stripos | 弃用 int 传递给 needle。
| stristr | 弃用 int 传递给 needle。
| strpos | 弃用 int 传入 needle。
| strrchr | 弃用将 int 作为 needle 传递。
| strripos | 弃用将 int 传递给 needle。
| strrpos | 弃用将 int 传递给 needle。
| strstr | 弃用传递 int 作为 needle。
7.2.18 | substr_compare | offset 现在可能等于 haystack。
7.2.0 | number_format | number_format 现在再也不会返回 -0，之前 num 为 -0.01 的情况下可以返回 -0。
| parse_str | 不带第二个参数的情况下使用 parse_str 会产生 E_DEPRECATED 警告。
| utf8_decode | This function has been moved from the XML extension to the core of PHP. In previous versions, it was only available if the XML extension was installed.
| utf8_encode | This function has been moved from the XML extension to the core of PHP. In previous versions, it was only available if the XML extension was installed.
7.1.0 | str_shuffle | 内置的随机算法从 libc rand 函数更改为梅森旋转伪随机数生成算法。
| stripos | 开始支持负数的 offset。
| strpos | 开始支持负数的 offset。
| substr_count | 开始支持负数的 offset 和 length。

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open