一开始想的用关键字查找,结果网上看了一大堆,没有符合我的,不知道是我上传图文的格式跟大家不一样还是咋的。然后自己写了一套方法,以关键字分割再组成数组,去获取图片的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'];
}
}