自从更新Emlog Pro程序之后,使用的是Markdown编辑器,因为此编辑器的特殊性,数据库存储的是特定语法,不是html代码,所以之前的获取文章封面的函数都不可用了。 本次给大家带来最新获取文章封面的函数,此函数需要根据文章的gid字段获取文章封面 如果文章中的封面字段为空,则自动根据两条正则表达式获取文章中的第一张图片 为什么是两条正则表达式呢?当有需要自定义img标签时,图片一样会获取。 函数代码:
1 /** 2 * 获取:指定文章的封面图 3 * @param $gid [文章id] 4 * @return $imgUrl 输出图片地址,无封面展示默认图 5 */ 6 function getBlogCover($gid = null){ 7 //缺省默认图,自行更改地址 8 $imgUrl = TEMPLATE_URL.'static/images/default/noLoad.svg'; 9 if(!empty($gid)){ 10 $db = Database::getInstance(); 11 $sql = "SELECT content,cover FROM ".DB_PREFIX."blog WHERE gid='$gid'"; 12 $data = $db->once_fetch_array($sql); 13 if(!empty($data['cover'])){ 14 $imgUrl = ltrim($data['cover'], '.'); 15 }else{ 16 $regExp_1 = '|!\[(.*)\]\((.+)\)|i'; 17 $regExp_2 = '|<img[^>]+src=\"([^>\"]+)\"?[^>]*>|is'; 18 preg_match($regExp_1, $data['content'], $regExp_1_Arr); 19 preg_match($regExp_2, $data['content'], $regExp_2_Arr); 20 if(isset($regExp_1_Arr[2]) && isset($regExp_2_Arr[1])){ 21 $place_1 = strpos($data['content'], $regExp_1_Arr[2]); 22 $place_2 = strpos($data['content'], $regExp_2_Arr[1]); 23 if($place_1 < $place_2){ 24 $imgUrl = @$regExp_1_Arr[2]; 25 } 26 $imgUrl = @$regExp_2_Arr[1]; 27 }elseif(isset($regExp_1_Arr[2])){ 28 $imgUrl = @$regExp_1_Arr[2]; 29 }elseif(isset($regExp_2_Arr[1])){ 30 $imgUrl = @$regExp_2_Arr[1]; 31 } 32 } 33 } 34 return $imgUrl; 35 }
将函数完全复制到模板文件中的module.php文件中任意位置即可,很多模板的代码是很乱的,填写时请注意,不要填写错误。
调用方法:
1 //可在循环中调用或单独调用都可以 2 <?= getBlogCover(你的文章id); ?>
标签:Arr,封面,Pro,第一张,Emlog,gid,regExp,data,imgUrl From: https://www.cnblogs.com/diss/p/17444453.html