给你的博客插入bilibili视频

February 4, 2018 · 代码 · 4696次阅读

说在前面:
1.本文的标题很纯洁
2.以下的内容简直就是黑历史,简直没眼看,不过为了以史为鉴,保留于此

是这样的,寒假闲来无事,想折腾些东西(虽然还有几个坑没填)
昨天突发奇想,想说在typecho里面用一些短代码来插入b站视频捏Σ(゚ω゚)
于是撸起袖子就开始干了


首先

首先,请检查一下你的typeho版本是不是测试版,比如这样子
banben.PNG

不是的就去升升级
那么定义一下短标签的形式,我用的是这样子<bili>av号</bili>

开始操作

在主题文件的functions.php里面新建一个函数

    function bili2post($content){
      //....  
    }

在post.php找到输出文章的代码<?php echo $this->content; ?>,改成<?php bili2post($this->content); ?>

首先要获取一下文章内容

    function bili2post($content){
      $str = $content;
    }

因为要在文章中匹配短标签,那就要用正则匹配啦,根据定义的标签来写正则式
以上面的为样本,由题得

/<bili>(.*)<\/bili>/U

然后就把文章匹配一下,得到一个数组

    function bili2post($content){
      $str = $content;
      preg_match_all ("/<bili>(.*)<\/bili>/U", $str, $av);
    }

如果想插入多个视频,那就用上了for循环

    function bili2post($content){
      $str = $content;
      preg_match_all ("/<bili>(.*)<\/bili>/U", $str, $av);

      $i = count($av[0]);
      $x = 0;
      for ($x; $x<$i; $x++)
      {
        //...
      }
    }

把正则匹配到的短代码优化一下
因为匹配的是<bili>xxx</bili>,所以要去掉两边的标签,获得“干净”的av号
这个时候

    $avnum = ltrim($av[0][$x],"<bili>");
    $avnum = rtrim($avnum,"</bili>");

那么我们可以从b站视频页看到,b站的外链播放器格式为

    <embed height="415" width="544" quality="high" allowfullscreen="true" type="application/x-shockwave-flash" src="//static.hdslb.com/miniloader.swf" flashvars="aid=5616151&p=1"></embed>

看到了找到av号的位置,把这代码截取一下(事后:多此一举)

    $bili1 = "<embed height='415' width='544' quality='high' allowfullscreen='true' type='application/x-shockwave-flash' src='https://static.hdslb.com/miniloader.swf' flashvars='aid=";
    $bili2 = "&page=1' pluginspage='https://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash'></embed><br>";

然后合成一下

    $ex2 = $bili1.$avnum.$bili2;

于是开始替换了

    $ex = "/<bili>(.*)<\/bili>/U";
    $str = preg_replace($ex,$ex2,$str);

综上所述,可得

    function bili2post($content){
  $str = $content;

  preg_match_all ("/<bili>(.*)<\/bili>/U", $str, $av);
  $i = count($av[0]);

  $x = 0;
  for ($x; $x<$i; $x++)
  {
    $ex = "/<bili>(.*)<\/bili>/U";

    $avnum = ltrim($av[0][$x],"<bili>");
    $avnum = rtrim($avnum,"</bili>");

    $bili1 = "<embed height='415' width='544' quality='high' allowfullscreen='true' type='application/x-shockwave-flash' src='https://static.hdslb.com/miniloader.swf' flashvars='aid=";
    $bili2 = "&page=1' pluginspage='https://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash'></embed><br>";
    $ex2 = $bili1.$avnum.$bili2;

    $str = preg_replace($ex,$ex2,$str);
  }
  echo $str;
}

收工

然后在编辑器中插入短代码就可以解析出来啦,试试看
test.PNG

看一下成果吧
end.PNG

好像成功了。。

很唠的地方

为什么说是很唠呢?

gg.PNG

WTF

吓得我又回去检查了一下我的代码
没毛病啊,结果去问了客服,说是那个外链播放器暂时不支持博客

dasima2.jpg

多唠哦

但是我们不能思维江化了,我们可以举一反三,你懂我意思吧
不一定是解析B站视频,这里给了一个思路,对吧(捂脸)

喝杯水

标签:typecho,bilibili,正则

最后编辑于:2019/02/11 16:48

添加新评论

  1. 2019-03-26 07:34

    Hello There. I discovered your blog the use of msn. This is a very well written article.
    I'll be sure to bookmark it and come back to read extra
    of your useful information. Thank you for the post. I will definitely return.

    回复
  2. 2019-02-16 17:43

    多捞哦!这是…熟悉的…东北大碴子味儿???哈哈哈哈哈

    回复
    1. 2019-02-16 20:51

      惊,我可是纯种南方人

      回复
      1. 2019-02-18 19:33

        我的东北室友总这么说,多捞哦!

        回复
  3. 操宇 操宇
    2018-05-31 22:31

    233

    回复
  4. 操宇 操宇
    2018-05-31 22:31

    233

    回复
  5. 2018-05-26 09:46

    本来我博客也支持类似功能的,后来b站调整了好几次视频分享代码,我就把这个功能给删了

    回复
  6. 2018-05-09 23:50

    懂。不存在的

    回复
  7. 2018-03-07 16:30

    呸,苟利国家生

    回复
  8. 2018-02-28 20:20

    hhhh 不知道为什么现在都不给外链了 orz

    回复
    1. 2018-03-07 12:50

      對啊(´Д` )

      回复
  9. 2018-02-26 17:10

    直接被图片get到了

    回复
    1. 2018-03-07 12:50

      欸!

      回复
  10. 2018-02-18 00:33

    这玩意...大概...是不需要测试版的(

    回复
  11. 2018-02-12 00:48

    致爱折腾的人!

    回复
  12. 2018-02-10 22:28

    Gengsir(纯真小耿)祝您新年大吉大利!感谢您一路陪伴!
    [p.s.sakuralove的评论怎么也评论不上,本来想送祝福来着QAQ希望他能看到]

    回复
    1. 2018-02-20 10:57

      同乐!我想sakuralove也会看到的

      回复
  13. 2018-02-10 16:03

    给了一个思路?还有这个文章的切换看着真熟悉

    回复
    1. 2018-04-08 17:39

      我看着也有点熟悉2333

      回复
    2. 2018-02-10 18:23

      啊啊..翻页贼好看QwQ

      回复
      1. 2018-02-10 18:24

        谢谢23333(

        回复

CATEGORIES

控制面板