专注分享网络那些事
Emlog Pro最新根据文章gid获取文章封面函数(无封面自动获取文章第一张图片)
建站技术 2023-05-15 08:06:00 2832 1

自从更新Emlog Pro程序之后,使用的是Markdown编辑器,因为此编辑器的特殊性,数据库存储的是特定语法,不是html代码,所以之前的获取文章封面的函数都不可用了。

本次给大家带来最新获取文章封面的函数,此函数需要根据文章的gid字段获取文章封面

如果文章中的封面字段为空,则自动根据两条正则表达式获取文章中的第一张图片

为什么是两条正则表达式呢?当有需要自定义img标签时,图片一样会获取。

函数代码

/**
 * 获取:指定文章的封面图
 * @param $gid [文章id]
 * @return $imgUrl 输出图片地址,无封面展示默认图
 */
function getBlogCover($gid = null){
    //缺省默认图,自行更改地址
    $imgUrl = TEMPLATE_URL.'static/images/default/noLoad.svg';
    if(!empty($gid)){
        $db = Database::getInstance();
        $sql = "SELECT content,cover FROM ".DB_PREFIX."blog WHERE gid='$gid'";
        $data = $db->once_fetch_array($sql);
        if(!empty($data['cover'])){
            $imgUrl = ltrim($data['cover'], '.');
        }else{
            $regExp_1 = '|!\[(.*)\]\((.+)\)|i';
            $regExp_2 = '|<img[^>]+src=\"([^>\"]+)\"?[^>]*>|is';
            preg_match($regExp_1, $data['content'], $regExp_1_Arr);
            preg_match($regExp_2, $data['content'], $regExp_2_Arr);
            if(isset($regExp_1_Arr[2]) && isset($regExp_2_Arr[1])){
                $place_1 = strpos($data['content'], $regExp_1_Arr[2]);
                $place_2 = strpos($data['content'], $regExp_2_Arr[1]);
                if($place_1 < $place_2){
                    $imgUrl = @$regExp_1_Arr[2];
                }
                $imgUrl = @$regExp_2_Arr[1];
            }elseif(isset($regExp_1_Arr[2])){
                $imgUrl = @$regExp_1_Arr[2];
            }elseif(isset($regExp_2_Arr[1])){
                $imgUrl = @$regExp_2_Arr[1];
            }
        }
    }
    return $imgUrl;
}

使用教程

将函数完全复制到模板文件中的module.php文件中任意位置即可,很多模板的代码是很乱的,填写时请注意,不要填写错误。

调用方法:

//可在循环中调用或单独调用都可以
<?= getBlogCover(你的文章id); ?>
文章说明
©版权声明
本站提供的一切软件、教程和游戏辅助仅限用于娱乐和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集,版权争议与本站无关。您必须在下载后的24个小时之内从您的设备中彻底删除。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
评论留言

昵称

邮箱

地址

1564661 游客 1 年前 测试寝宫 回复