PHP获取百度编辑器上传文章中的第一张图

       一开始想的用关键字查找,结果网上看了一大堆,没有符合我的,不知道是我上传图文的格式跟大家不一样还是咋的。然后自己写了一套方法,以关键字分割再组成数组,去获取图片的src里面的链接,上传的时候配置路径是:/lth/Public/upload/images/时间/时间戳/文件后,接下来以路径去匹配,查询这里就略过,直接看调用方法:

 $arr1 = $BannerLogic->newsarticleInfo(10,2);  //文章查询函数的调用

foreach($arr1[3] as $key => $value){
     $content = explode('/lth/Public/upload/images/',htmlspecialchars($value['contents'])); //分割文章组成数组
     $content = explode('quot',$content[1]); //再次分割喊图片的文章数组
     if($content[0] !== ''){ //当前文章有图片
          $content = str_replace('&','-',$content[0]); //去掉最后的特殊符号
     }
     $contents[$key]['id'] = $value['news_article_id']; //文章id          
     $contents[$key]['str'] = substr($content,0,-5); //第一张图片名称(时间/文件名)
}
$count = 0; //定义变量
foreach($contents as $k => $v){
     if($v['str'] == ''){ //当前文章没有图片
         unset($arr1[3][$k]); //移除当前文章
     }else{
         $count++; //统计有图片的新闻条数(显示在数字按钮处)
         $arr1[3][$k]['str'] = $v['str']; //将图片名称(时间/文件名)追加到文章查询后的结果集     
     }
     
}    

补充:最近找到正则匹配的方法

foreach($arr1[3] as $key => $value){
    $preg = '|src=(.*) |U'; //匹配img标签的正则表达式
    preg_match_all($preg, $value['contents'], $img); //这里匹配所有的img
    $contents[$key]['id'] = $value['news_article_id'];          
    $contents[$key]['str'] = $img[1][0];
}
$count = 0;      
foreach($contents as $k => $v){
    if($v['str'] == ''){
         unset($arr1[3][$k]);
    }else{
         $count++;
         // 移除" 特殊符号,这里冒号要去掉,不然图片在前端显示不出来
         $v['str'] = substr($v['str'],0,-6);
         $v['str'] = substr($v['str'],6); 
         $arr1[3][$k]['str'] = $v['str'];
    }          
}

 

 

 

你可能感兴趣的:(ThinkPHP,ThinkPHP5,PHP,html5,MySql)