# Typecho如何调用文章第一张图，第N张图以及无图显示随机图

*Published:* 2024-01-01
*Author:* 客服001

#### 温馨提醒

如果文章内容或图片资源失效，请留言反馈，我们会及时处理，谢谢

本文最后更新于2024年1月1日，已超过 180天没有更新



### 方法一

将下面的代码放入Functions.php文件：

```
function thumb($cid) {
if (empty($imgurl)) {
$rand_num = 10; //随机图片数量，根据图片目录中图片实际数量设置
if ($rand_num == 0) {
$imgurl = "随机图片存放目录/0.jpg";
//如果$rand_num = 0,则显示默认图片，须命名为"0.jpg"，注意是绝对地址
}else{
$imgurl = "随机图片存放目录/".rand(1,$rand_num).".jpg";
//随机图片，须按"1.jpg","2.jpg","3.jpg"...的顺序命名，注意是绝对地址
}
}
$db = <a class="tag_link" href="https://www.xarjtc.com/tag/typecho" target="_blank" title="查看Typecho此标签更多文章"><abbr title="">Typecho</abbr></a>_Db::get();
$rs = $db->fetchRow($db->select('table.contents.text')
->from('table.contents')
->where('table.contents.type = ?', 'attachment')
->where('table.contents.parent= ?', $cid)
->where('table.contents.order= ?', 2)
->order('table.contents.cid', Typecho_Db::SORT_ASC)
->limit(1));
$img = unserialize($rs['text']);
if (empty($img)){
echo $imgurl;
}
else{
echo '你的博客地址'.$img['path'];
}
}
```

然后在想在调用的文件里放入以下代码，这里我放入的是首页位置。

前端输出显示：&lt;?php echo thumb($this-&gt;cid); ?&gt;

上面的代码里面

```
->where('table.contents.order= ?',
```

这里的2指定是第二个附件数据

如果控制输出第几个，或者多张图顺序的时候，从这里入手应该就可以了

### 方法二

同样也是将以下代码放入Functions.php文件中：

```
  function thumbside($con) {
    preg_match_all('/\&lt;img.*?src\=\"(.*?)\"[^>]*>/i', $con, $thumbUrl);  //通过正则式获取图片地址
    preg_match_all('/\!\[.*?\]\((http(s)?:\/\/.*?(jpg|png))/i', $con, $patternMD);  //通过正则式获取图片地址
    preg_match_all('/\[.*?\]:\s*(http(s)?:\/\/.*?(jpg|png))/i', $con, $patternMDfoot);
    if(count($thumbUrl[0])>1){
            return $thumbUrl[1][1];  //当找到一个src地址的时候，输出缩略图
    }else if(count($patternMD[0])>1){
            return $patternMD[1][1];
    }else if(count($patternMDfoot[0])>1){
            return $patternMDfoot[1][1];
    }else{
    
    $rand_num = 5; 
    return Helper::options()->siteUrl."usr/themes/pure/randimg/".rand(1,$rand_num).".jpg";
    }
}
```