【备忘】Z-BlogPHP 使用随机图片 API 设置缩略图

简述

Z-BlogPHP 接入随机图 API 用于缩略图

代码

/**
 * 提取或者设置图片
 *
 * @param object $article
 * @param string $type   用于决定返回形式
 * @return string imgurl | 
 */
function demoAPP_Thumbnail($article, $type = 'imgurl')
{

  $matches = null;
  preg_match_all("/]*src=\"([^\"]+)\"[^>]*>/i", $article->Content, $matches);
  if (isset($matches[1]) && count($matches[1]) > 0) {
    $imgurl = $matches[1][0];
  } else {
    $imgurl = demoAPP_setRndImg($article->ID);
    // $imgurl = demoAPP_setRndImgNetwork(); // 在当前需求下此种方式并不科学。可能会被服务方限制
  }
  // 默认返回图片地址
  if ($type == 'imgurl') {
    return $imgurl;
  }
  // 传入任意其他值可返回  标签
  $tplImg = '';
  return strtr($tplImg, array('imgurl' => $imgurl, 'title' => $article->Title));
}

/**
 * 可直接引用的随机图接口
 *
 * @param string $rndhash 传入一个参数用于防止图片重复
 * @return string
 */
function demoAPP_setRndImg($rndhash)
{
  return "https://picsum.photos/350/260?random={$rndhash}";
}

/**
 * 接口本身返回 json ,需要额外提取图片地址
 *
 * @return string
 */
function demoAPP_setRndImgNetwork()
{
  global $zbp;
  // 失败时的默认图
  $imgurl = "{$zbp->host}zb_users/theme/demoAPP/var/images/no-image.jpg";
  // 接口地址
  $url = "https://api.vvhan.com/api/acgimg?type=json";
  $http = Network::Create();
  $http->open('GET', $url);
  // $http->setTimeOuts(10, 10, 0, 0);
  $http->send();
  // 对抓取内容进行解析
  if ($http->status == 200 && $json = json_decode($http->responseText, true)) {
    // 返回字段以实际接口为准
    $imgurl = $json['imgurl'];
  }
  return $imgurl;
}

模板内调用:


{demoAPP_Thumbnail($article,1)}

推荐

关于 Z-BlogPHP 1.7 缩略图的一些记录_电脑网络_沉冰浮水:

https://www.wdssmq.com/post/20210224481.html

[开发者]正则表达式相关专贴-开发者中心-ZBlogger 技术交流中心:

https://bbs.zblogcn.com/thread-101713.html

原文链接:https://www.wdssmq.com/post/20100215532.html

微信公众号:「水水不想说」

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值