网行客•3H 2022-03-09 11:06
浏览 16
已结题

PHP一段奇怪的正则代码,是编码错误还是什么特殊处理?

if ( preg_match ( '/[oc]:[^:]*\d+:/i', $seried ) ) { return array(); } 其中$seried是未定义的。

下载的一个开源系统来学习,其中一段代码:


function iunserializer($value) {
    if (empty($value)) {
        return array();
    }
    if(version_compare(PHP_VERSION, '7.0.0', '>=')){
        $result = unserialize($value, array('allowed_classes' => false));
    }else{
        if(preg_match('/[oc]:[^:]*\d+:/i', $seried)){
            return array();
        }
        $result = unserialize($value);
    }
    if ($result === false) {
        $temp = preg_replace_callback('!s:(\d+):"(.*?)";!s', function ($matchs){
            return 's:'.strlen($matchs[2]).':"'.$matchs[2].'";';
        }, $value);
        return unserialize($temp);
    } else {
        return $result;
    }
}

其中的这个if判断不知道什么意思,因为$seried是一个没有定义的变量(搜索了整个项目代码也没有定义):
if ( *preg_match('/[oc]:[^:]\d+:/i', $seried ) ) {
return array();
}

看它的上一级逻辑,这个是在PHP7以下版本才会处理。这是编码错误还是针对低版本PHP的什么特殊处理?

我试过在低版本运行,系统也没有什么错误出现。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 3月17日
    • 创建了问题 3月9日

    悬赏问题

    • ¥15 有了解d3和topogram.js库的吗?有偿请教
    • ¥100 任意维数的K均值聚类
    • ¥15 stamps做sbas-insar,时序沉降图怎么画
    • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
    • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
    • ¥15 关于#Java#的问题,如何解决?
    • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
    • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
    • ¥15 cmd cl 0x000007b
    • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line