首页 > 其他分享 >Emlog Pro 自动获取文章内第一张图片作封面图

Emlog Pro 自动获取文章内第一张图片作封面图

时间:2023-05-30 20:55:54浏览次数:34  
标签:Arr 封面 Pro 第一张 Emlog gid regExp data imgUrl

自从更新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

相关文章

  • Kali内置代理工具Proxychains的简单使用
    1.介绍Kali中内置了ProxyChains开源代理工具,通过使用这个工具,可以让我们隐藏真实ip实现攻击、代理上网等使用ProxyChains,用户可以在KaliLinux中配置不同类型的代理服务器,包括HTTP、SOCKS4和SOCKS5代理。此外,用户还可以为不同的目标指定不同的代理服务器,以确保他们的行为不被检......
  • 根据ProcessId获取进程的窗口句柄
    functionTForm1.GetHWndByPID(consthPID:THandle):THandle;typePEnumInfo=^TEnumInfo;TEnumInfo=recordProcessID:DWORD;HWND:THandle;end;functionEnumWindowsProc(Wnd:DWORD;varEI:TEnumInfo):Bool;stdcall;var......
  • 对象.hasOwnProperty()的应用
     ......
  • android开发java.lang.NoClassDefFoundError: org/jetbrains/kotlin/cli/common/Prope
    问题:编译Android项目出现java.lang.NoClassDefFoundError:org/jetbrains/kotlin/cli/common/PropertiesKt原因:项目使用发JDK版本和Kotlin版本不一致或者说不对应导致gradle找不到对应的类解决方法:我的解决方法是降低JDK的版本到1.8,具体操作是OpenModulesSettings->SDKLoc......
  • prometheus Loki日志采集分析工具,loki与ELK的区别
    一、Loki是什么?Loki是由GrafanaLabs开源的一个水平可扩展、高可用性,多租户的日志聚合系统的日志聚合系统。它的设计初衷是为了解决在大规模分布式系统中,处理海量日志的问题。Loki采用了分布式的架构,并且与Prometheus、Grafana密切集成,可以快速地处理大规模的日志数据。该项目......
  • 2022 AMC 10B Problems
     Problem1DefinetobeforallrealnumbersandWhatisthevalueof Problem2Inrhombus,pointliesonsegmentsothat,,and.Whatistheareaof?(Note:Thefigureisnotdrawntoscale.) Problem3Howmanythree-digitpositivei......
  • ProgressBar控件(进度条)
    基础知识参阅官方文档:ProgressBar控件概述-WindowsForms.NETFramework|MicrosoftLearnC#ProgressBar的简单使用-Riku君-博客园(cnblogs.com)......
  • Focus On 3D Terrain Programming三维地形渲染-Trent Polack-2003
    前言:你有多少次访问过你最喜欢的编程论坛或邮件列表,并对大量关于地形渲染算法的帖子感到惊讶,这些帖子似乎从各个角度向你袭来?地形渲染似乎是当今业余程序员最喜欢的主题;它是一个很好的门户网站,可以了解更高要求的问题及其解决方案。然而,地形渲染决不是一个简单的问题,特定的解决方......
  • An attempt has been made to start a new process before the current process has f
     Traceback(mostrecentcalllast): File"<string>",line1,in<module> File"E:\Eprogramfiles\Anaconda3\lib\multiprocessing\spawn.py",line116,inspawn_main   exitcode=_main(fd,parent_sentinel) File"E......
  • Self-consistency Improves Chain of Thought Reasoning in Language Models 论文阅读
    ICLR2023原文地址1.MotivationChain-of-Thought(CoT)使LargeLanguageModels(LLMs)在复杂的推理任务中取得了令人鼓舞的结果。本文提出了一种新的解码策略——self-consistency,以取代贪婪解码。self-consistency利用了一种直觉,即一个复杂的推理问题通常允许多种不同的思维......