admin 发表于 2020-9-15 23:53:14

destoon PHP在文章无缩略图时抓取单张或者多张文章内容图片

1.写一个方法专门做抓取图片。
function getImgs($content,$order='ALL'){
    $pattern="/<img.*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/";
    preg_match_all($pattern,$content,$match);
    if(isset($match)&&!empty($match)){
      if($order==='ALL'){
            return $match;
      }
      if(is_numeric($order)&&isset($match[$order])){
            return $match[$order];
      }
    }
    return '';
}2.利用查询出列表页的文章ID去查询内容
$result = $db->query("SELECt ".$MOD['fields']." FROM {$table} WHERe $condition ORDER BY $order LIMIT $offset,$pagesize");
    while($r = $db->fetch_array($result)) {
      if($kw) $r['title'] = str_replace($kw, '<b class="f_red">'.$kw.'</b>', $r['title']);
      $r['linkurl'] = mobileurl($moduleid, 0, $r['itemid']);
      $r['date'] = timetodate($r[$time], $page < 4 ? 2 : 3);
      $lists[] = $r;
    }

      // 获取内容
foreach($lists as $key=>$val){
    $t = $db->query("SELECT content FROM taomodi_article_data_21 WHERe itemid=".$val['itemid']);
    while($res = $db->fetch_array($t)){
      $content = video5($res['content']);
      $content = str_replace('<hr class="de-pagebreak"/>', '', $content);
      //调用方法
      $val['content'] = getImgs($content);
      $lists[$key] = $val;
    }
}
// var_dump($lists);die;3.模板中使用
{loop $lists $vv}
<li>
    <a href="{$vv}">
      <div class="{if count($vv)==1 && !empty($vv)}article_left{/if}">
      <dt>{$vv}</dt>
      <dd>{php $res = dsubstr($vv['introduce'],'80','...');echo str_replace(' ','',$res);}</dd>
      </div>
      <div class="{if count($vv)==1 && !empty($vv)}article_right{/if}">
      <dd>
            {if $vv}
            {loop $vv $k $v}
                {php if($k >=3) break;}
                <img src="{$v}" id="{if count($vv)==1 && !empty($vv)}article_img{/if}"/>
            {/loop}
            {/if}
      </dd>
      </div>
      <div class="clear"></div>
    </a>
</li>
{/loop}

页: [1]
查看完整版本: destoon PHP在文章无缩略图时抓取单张或者多张文章内容图片