WordPress程序采集文章并设置特色图片

WordPress的采集插件挺多, 功能也很强大。但是如果要折腾,还是自己写 :D

下面是我的采集插件里的几个关键函数:

匹配函数(经测试效率最好的一个)

/**
 * 获取第一个匹配的内容
 *
 * @author        Copyright (c) <//sjolzy.cn>
 * @param        string    $str    内容
 * @param        string    $start    起始匹配
 * @param        string    $end    中止匹配
 * @return        string
 */
private function strCut($str, $start, $end){
    $content = strstr( $str, $start );
    $content = substr( $content, strlen( $start ), strpos( $content, $end ) - strlen( $start ) );
    return $content;
}

取出所有匹配的内容

/**
 * 获取所有匹配的内容
 *
 * @author        Copyright (c) <//sjolzy.cn>
 * @param        string    $str    内容
 * @param        string    $start    起始匹配
 * @param        string    $end    中止匹配
 * @return        array
 */
private function strCutAll($str,$start,$end){
    $content    = explode($start,$str);
    $matchs        = array();
    $sum        = count($content);
    for( $i = 1;$i < $sum;$i++ ){
        $tmp = explode($end,$content[$i]);
        $matchs[] = $tmp[0];
        unset($tmp);
    }
    return $matchs;
}

通过上面两个函数, 在使用preg_match_all配合正则表达式, 想要的网页内容基本都能采集到.

效率相对比较高的一个采集网页的函数

/**
 * 根据URL采集网页内容
 *
 * @author        Copyright (c) <//sjolzy.cn>
 * @param        string    $url    链接地址
 * @return        string
 */
private function fetch($url){
    $handle = fopen($url, 'r');
    $content = '';
    while (!feof($handle)){
        $content .= fgets($handle, 10000);
    }
    return $content?$this->utf8_iconv($content):'';
}
//这里的utf8_iconv函数是把GB2312转成UTF-8编码

上面是我的采集插件里的主要函数, 内容采集到手后, 就是各种入库.

WordPress程序采集分类并自动入库

//添加目录
private function addCat($name,$slug,$parent=0,$desc=''){
    $cat = array(
            'cat_name'                => $name,
            'category_description'    => $desc,
            'category_nicename'        => $slug,
            'category_parent'        => $parent
        );
    return wp_insert_category
($cat);
}

WordPress程序采集并保存文章

 

//添加日志
private function addPost($title,$content,$slug='',$cats=array()){
    $post = array(
        'post_title'        => $title,
        'post_name'            => $slug,
        'post_content'        => $content,
        'post_status'        => 'publish',
        'post_author'        => 1,
        'post_category'        => $cats
    );
    return wp_insert_post
( $post );
}

自动设置文章的特色图片

$img    = '网络图片地址';
$p1    = '文章ID';//addPost返回
$attachment_id    = $this->addAttachment($img,$p1);
add_post_meta($p1, '_thumbnail_id', $attachment_id, true);

综上, 可见WordPress程序采集文章并不难..