找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2030|回复: 0

[分享] dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)

[复制链接]
发表于 2018-3-17 09:48:39 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
具体的实现代码,如下:下面会给简单的说明。
代码如下:
  1. <?php
  2. /*
  3. 1. 配置好你的数据库连接
  4. 2. 注意数据表名的前缀 默认为dede_
  5. 3. 一定要先备份你的数据库 或备份dede_archives表 如产生损失本人概不负责
  6. */
  7. //数据库连接设置
  8. $ip = "localhost"; //地址
  9. $user = "jb51"; //用户名
  10. $pw = "www."; //密码
  11. $db = "jb51"; //表名
  12. $conn=mysql_connect ($ip,$user,$pw);
  13. mysql_select_db($db);
  14. mysql_query("set names gbk"); //设置编码为 GBK
  15. //开始!获取body数据
  16. function body($id){
  17. $exec="select * from dede_addonsoft where aid = '".$id."'";
  18. $result=mysql_query($exec);
  19. $rs=mysql_fetch_object($result);
  20. $id = $rs->introduce ;
  21. return $id =$id ;
  22. }
  23. //结束!获取body数据
  24. //开始!提取变量中第一个图片地址
  25. function bodyimg($obj) {
  26. if(isset($obj)){
  27. if ( preg_match( "<img.*src=["](.*?)["].*?>", $obj, $regs ) ) { //使用获取第一幅图像地址
  28. return $obj = $regs[1] ;
  29. } else {
  30. echo "Erro:没有图片地址!<br>";
  31. return $obj = 1 ;
  32. }
  33. }
  34. }
  35. //结束!提取变量中第一个图片地址
  36. //开始 修改rchives,插入获取的图像地址
  37. function changearchives($pic,$id) {
  38. $sql="UPDATE `dede_archives`
  39. SET `litpic` = '".$pic."'
  40. WHERE `id` = '".$id."'";
  41. $result=mysql_query($sql);
  42. if($result==1) echo "修改数据成功!<br>";
  43. else echo "修改数据失败!<br>";
  44. }
  45. //结束 修改rchives,插入获取的图像地址
  46. //显示数据表内容
  47. $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=''
  48. $result=mysql_query($exec); //指定栏目ID但只能是最小分类的ID, litpic = '' 意为缩略图地址为空
  49. while($rs=mysql_fetch_object($result))
  50. {
  51. $id = $rs->ID;
  52. echo $id." ";
  53. $body = body($id); //调用函数获取 body内容
  54. $pic = bodyimg($body); //调用函数获取 body里面的第一张图片地址
  55. if ($pic<>1){
  56. changearchives($pic,$id); //调用函数插入获取的地址
  57. }
  58. }
  59. mysql_close($conn);
  60. ?>
复制代码

我也是刚刚学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的版本,其它的版本应该也适应。多测试(备份的前提下。)

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-12-23 23:33 , Processed in 0.040167 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表