给你的博客插入bilibili视频

1562天前 · 代码 · 8686次阅读

说在前面:
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++)
      {
        //...
      }
    }

把正则匹配到的短代码优化一下
因为匹配的是xxx,所以要去掉两边的标签,获得“干净”的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站视频,这里给了一个思路,对吧(捂脸)

👍 1

typecho bilibili 正则

最后修改于621天前

评论

贴吧 狗头 原神 小黄脸
收起

贴吧

狗头

原神

小黄脸

  1. cialis prices 1147天前

    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. 初夏阳光 1185天前

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

    1. 季悠然 1185天前

      惊,我可是纯种南方人

      1. 初夏阳光 1183天前

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

  3. 操宇 1446天前

    233

  4. 操宇 1446天前

    233

  5. Jrotty 1451天前

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

  6. 房东的猫 1468天前

    懂。不存在的

  7. 冯小贤 1531天前

    呸,苟利国家生

  8. 某昴 1538天前

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

    1. 季悠然 1531天前

      對啊(´Д` )

  9. 程序员爱好者 1540天前

    直接被图片get到了

    1. 季悠然 1531天前

      欸!

  10. 黎明余光 1549天前

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

  11. 煮只鸡 1555天前

    致爱折腾的人!

  12. Gengsir 1556天前

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

    1. 季悠然 1546天前

      同乐!我想sakuralove也会看到的

  13. metheno 1556天前

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

    1. Hran 1499天前

      我看着也有点熟悉2333

    2. 季悠然 1556天前

      啊啊..翻页贼好看QwQ

      1. metheno 1556天前

        谢谢23333(

目录

avatar

季悠然

寻找有趣的灵魂

127

文章数

1954

评论数

3

分类

好热啊

arknights!

末将于禁,愿为曹家世代赴汤蹈火。

107