马上注册,免费下载更多dz插件网资源。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
趁帝国8.0还没有发布,说说帝国那些老掉牙的代码。主要集中到编码处理e/class/doiconv.php这个文件。基本需要大改。首先看个片段。- $this->unicode_table = array(); while(list($key,$value)=each($tmp)) { $this->unicode_table[hexdec(substr($value,7,6))]=substr($value,0,6); }
复制代码 PHP 4.0.0 开始支持 each(),但是从 PHP 7.0.0 开始,each() 函数已被弃用,并且在 PHP 8.0.0 中被移除。想想这是多古老的函数了。别小看这个会影响到帝国自带的全文搜索,支付,增加栏目生成拼音乱码等(php7.3+以上环境)所以帝国7.5建议PHP不能大于7.1是最合适的。
那怎么解决呢,其实很简单的。使用 foreach就可以了,代码如下:
- $this->unicode_table = array(); foreach($tmp as $key=>$value) { $this->unicode_table[hexdec(substr($value,7,6))]=substr($value,0,6); }
复制代码 实际帝国存在这片段的代码还有很多处的就不一一讲解了,另外帝国函数命名不规范(必需参数与可选参数顺序),数组键名不带单引号(PHP8+会直接终止运行的)等。说直接点要想帝国7.5UTF支持现在的PHP8+也就是需要把帝国以往的所有文件全部去修改一遍。因为帝国的数组键名都是没有带单引号的。顺便告诉个好消息,就算帝国8.0发布后,只要你有二次开发基本也需要全部修改您的二开代码。因为二开的作者大都是偷懒也没有注意这些兼容细节的。谨此提供需要的老坛们,望看见此贴的有二开帝国的站长重视下代码的规范写法。
©DZ插件网所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 网站部分内容来源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,得到更好的正版服务。 您在本站任何的赞助购买、下载、查阅、回复等行为等均表示接受并同意签订《DZ插件网免责声明协议》。 如有侵权请邮件与我们联系处理: discuzaddons@vip.qq.com 并出示相关证明以便删除。敬请谅解!
|
|