gpt4 book ai didi

php - 我应该使用多字节重载 (mbstring.func_overload) 吗?

转载 作者:可可西里 更新时间:2023-11-01 13:48:58 25 4
gpt4 key购买 nike

我正在使我的 PHP 站点支持 Unicode。我想知道是否有人对 mbstring.func_overload 设置有经验,它用多字节等价物 (mb_strlen )。 PHP 手册页上没有任何评论。

有什么我应该注意的潜在问题吗?在任何情况下调用多字节版本都是一个坏主意?

我想一个例子是处理加密的函数,因为它们可能期望处理字节串,而不是字符串。

此外,手册页包含一条注释:“不建议在每个目录上下文中使用函数重载选项,因为尚未确认它在生产环境中是否足够稳定,并且可能导致未定义的行为。 "

这是否意味着它在每个目录上下文中不稳定,或者它通常不稳定?措辞不明确。

最佳答案

我的回答是:绝对不会!

问题在于,一旦 str* 函数重载,就没有简单的方法来“重置”它们。

在一段时间内,这可以很好地用于您的项目,但几乎可以肯定的是,您会遇到使用字符串函数的外部库,例如,实现二进制协议(protocol),并且它们会失败。它们会失败,您将花费数小时试图找出它们失败的原因。

当你发现它是mbstring.func_overload之后,你就没有太多选择了。您可以在每次调用外部库时将 mbstring.internal_encoding ini_set 设置为每个字符一个字节的编码,然后立即将其设置回来,但是如果您的库对您的应用程序进行回调,它将只是把事情搞砸了。

另一种选择是手动调整库,将所有 str* 函数更改为其对应的 mb_string 并将每个字符一个字节作为编码参数传递。然而,这也不是一个好主意,因为您失去了轻松更新外部设备的能力,并且还可能导致一些性能问题。

所以,再次声明,不要使用 func_overload。如果您使用多字节字符串,请使用适当的 mb_ 函数。

关于php - 我应该使用多字节重载 (mbstring.func_overload) 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/222630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com