实现PHP168图片模型的采集、发布、缩略图提取下载
使用火车采集器往PHP168发布数据,总有很多问题,从V5到现在的V6。
由于使用的人数并不多,这里就不多讲问题原因了。
以下是我的解决办法,简单思路为:
- 使用HTML代码的形式,发布图片内容,使用正则提取图片地址。
- 分析每条图片地址,如果是远程图片,就将图片下载到地。
- 检查缩略图是否存在,不存的话,自动从内容中提取缩略图。
以下是代码片段。
[php]
//过滤火车采集器发布的错误
preg_match("@\[@", $postdb[picurl]) && $postdb[picurl]=”;
//图片模型的图片处理
if(isset($post_db[photourl][locoy])){
//获取图片地址
$post_db[photourl][locoy] = stripslashes($post_db[photourl][locoy]);
$match = "<img[^>]*?src=[\"’\s]*?([^>\"’]*?)[\"’>]*?[^>]*?>";
preg_match_all("@$match@is", $post_db[photourl][locoy], $post_db[photourl][img]);
$post_db[photourl][img] = array_unique($post_db[photourl][img][0]);
//print_r($post_db[photourl][img]);
//初始化内容
$post_db[photourl][name] = $post_db[photourl][url] = array();
function getInfoFromIMG($img, $key)
{
$match = "$key=[\"’\s]*?([^>\"’\s]*?)[\"’>\s]*?[^>]*?>";
preg_match_all("@$match@isU", $img, $key);
return trim($key[1][0],",\"\\ /’");
}
//循环处理图片地址
foreach ($post_db[photourl][img] as $key=>$img)
{
$img_url = getInfoFromIMG($img, ‘src’);
if($img_url){
$img_url = preg_match("@://@", $img_url) ? get_outpic($img_url, $fid, 1) : $img_url;
$post_db[photourl][url][$key] = $img_url;
$post_db[photourl][name][$key] = getInfoFromIMG($img, ‘alt’);
(empty($postdb[picurl]) || !isset($postdb[picurl])) && $postdb[picurl] = $post_db[photourl][url][$key];
}else continue;
}
preg_match("@://@", $postdb[picurl]) && $postdb[picurl] = get_outpic($postdb[picurl], $fid, 1);
}
[/php]