• 全国400电话网上服务平台
    强大号码库资源任选,方便,快捷,快速开通。
    咨询热线:400-1100-266  

    dedecms 批量提取第一张图片最为缩略图的代码(文
    POST TIME:2020-04-10 20:28

    具体的实现代码,如下:下面会给简单的说明。

    代码如下:
    <?php
    /*
    1. 配置好你的数据库连接
    2. 注意数据表名的前缀 默认为dede_
    3. 一定要先备份你的数据库 或备份dede_archives表 如产生损失本人概不负责
    */
    //数据库连接设置
    $ip = "localhost"; //地址
    $user = "jb51"; //用户名
    $pw = "www."; //密码
    $db = "jb51"; //表名
    $conn=mysql_connect ($ip,$user,$pw);
    mysql_select_db($db);
    mysql_query("set names gbk"); //设置编码为 GBK

    //开始!获取body数据

    function body($id){
    $exec="select * from dede_addonsoft where aid = '".$id."'";
    $result=mysql_query($exec);
    $rs=mysql_fetch_object($result);
    $id = $rs->introduce ;
    return $id =$id ;
    }
    //结束!获取body数据

    //开始!提取变量中第一个图片地址
    function bodyimg($obj) {

    if(isset($obj)){
    if ( preg_match( "<img.*src=["](.*?)["].*?>", $obj, $regs ) ) { //使用获取第一幅图像地址
    return $obj = $regs[1] ;
    } else {
    echo "Erro:没有图片地址!<br>";
    return $obj = 1 ;
    }
    }

    }
    //结束!提取变量中第一个图片地址

    //开始 修改rchives,插入获取的图像地址
    function changearchives($pic,$id) {
    $sql="UPDATE `dede_archives`
    SET `litpic` = '".$pic."'
    WHERE `id` = '".$id."'";
    $result=mysql_query($sql);
    if($result==1) echo "修改数据成功!<br>";
    else echo "修改数据失败!<br>";
    }
    //结束 修改rchives,插入获取的图像地址

    //显示数据表内容
    $exec="select * from dede_archives where typeid in(494,495,496,497,498,499,500,501,502,503,504,374,375,376,377,378,379,488) and litpic = ''"; //channel='1' 即文章频道 也可以使用typeid=''
    $result=mysql_query($exec); //指定栏目ID但只能是最小分类的ID, litpic = '' 意为缩略图地址为空
    while($rs=mysql_fetch_object($result))
    {

    $id = $rs->ID;
    echo $id." ";
    $body = body($id); //调用函数获取 body内容
    $pic = bodyimg($body); //调用函数获取 body里面的第一张图片地址
    if ($pic<>1){
    changearchives($pic,$id); //调用函数插入获取的地址
    }
    }
    mysql_close($conn);
    ?>

    我也是刚刚学PHP 上面的代码也是东拼西凑起来的 做了详细的注释 初学者也可以来看看

    因为上面的代码不能自动的获取下一级目录,所以比较手工添加目录id,常用的语句有。
    $exec="select * from dede_archives where typeid in(1,2,3) and litpic = ''"; //channel='1' 即文章频道 也可以使用typeid=''
    上面的代码是获取typeid为 1和2和3的数据。
    如果执行修改一个id可以用下面的语句
    $exec="select * from dede_archives where typeid='1' and litpic = ''";
    如果是频道的可以用
    $exec="select * from dede_archives where channel='1' and litpic = ''";
    注意先备份,要不就不要随便测试了,注意是 dedecms5.1的版本,其它的版本应该也适应。多测试(备份的前提下。)

    
    关于我们 | 付款方式 | 建站知识 | 增值服务 | 网站模板
    Copyright © 2003-2016
    时间:9:00-21:00 (节假日不休)
    版权所有:巨人网络(扬州)科技有限公司
    总部地址:江苏省信息产业基地11号楼四层
    《增值电信业务经营许可证》 苏B2-20120278
    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信

    微信号已复制,请打开微信添加咨询详情!