程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> dedecms 批量提取第一張圖片最為縮略圖的代碼(文章+軟件)

dedecms 批量提取第一張圖片最為縮略圖的代碼(文章+軟件)

編輯:關於PHP編程

具體的實現代碼,如下:下面會給簡單的說明。
復制代碼 代碼如下:
<?php
/*
1. 配置好你的數據庫連接
2. 注意數據表名的前綴 默認為dede_
3. 一定要先備份你的數據庫 或備份dede_archives表 如產生損失本人概不負責
*/
//數據庫連接設置
$ip = "localhost"; //地址
$user = "jb51"; //用戶名
$pw = "www.jb51.net"; //密碼
$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的版本,其它的版本應該也適應。多測試(備份的前提下。)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved