TypeCodes

升级博客文章同步微博的插件:PHP正则提取Markdown的图片地址

作为一个微博控,为了把博客的文章同步到新浪微博上,BZ在新浪微博开放平台申请了一个应用。然后在自己的CentOS服务器上,利用官方PHP SDK搭了个服务端应用。这样通过博客插件作为请求客户端,调用相关API接口把文章同步到微博上。微博发布后,会显示来源,也即应用名称(如下图BZ的是TypeCodes)。

博客文章同步到新浪微博的效果

1 插件升级:增加微博图片模式

之前插件同步文章时,调用的是新浪微博API中的update接口,只能发布一条无图片的微博信息。昨天把插件升级了下,支持选择是否发布带图片的微博。对于发布带图片模式的微博,改用API中的upload接口。

插件升级:增加微博图片模式

2 升级原理:利用PHP正则提取Markdown的图片地址

下面是处理发布带图片模式的微博的核心代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
    /**
     * @FILENAME    regexmarkdownimgurl.php
     * @DESCRIPT    PHP利用正则表达式提取Markdown中的图片地址
     * @AUTHOR      vfhky 2015.08.15 https://typecodes.com/mix/synweibophpmarkdownimgurl.html
     */

    //测试数据:文章中带有图片URL地址的Markdown数据
    $content_substr = '升级博客文章同步微博的插件:PHP正则提取Markdown的图片地址。

    ![博客文章同步到新浪微博的效果](https://o3cex9zsl.qnssl.com/2015/08/blog_synchronize_weibo.png "博客文章同步到新浪微博的效果" )';

    //开始利用正则表达式提取Markdown中的图片地址,只要匹配一次就结束
    if( preg_match( '/!\[[^\]]*]\((https):\/\/[^\)]*\.(png|jpg)(.*)\)/i', $content_substr, $img_match ) )
    {
        if( preg_match( '/(https:\/\/)[^>]*?\.(png|jpg)/i',$img_match[0],$img_match_retult ) )
            $post_img = $img_match_retult[0];
    }

    //输出匹配到的图片地址url: https://o3cex9zsl.qnssl.com/2015/08/blog_synchronize_weibo.png
    echo $post_img;
?>
3 update on 2017.07.04

由于博客在2015-12-10已经从Typecho转到了Pelican,所以这个插件一直也没管了。最近有同学在Github上提了issue,所以重新写了《Typecho同步新浪微博的插件(可提取文章图片作配图)》这篇文章对插件作了详细说明,希望对大家有帮助。

打赏支持

Comments »