PHP运用正则表达式实现直播源播放列表格式转换

正则表达式

PHP在使用正则匹配的时候需要使用“/”符号,称为定界符,“/”定界符之间的部分才是有效的匹配表达式

单引号&&双引号

在PHP中,双引号串中的内容可以被解释或替换,而单引号串中的内容总被认为是普通字符。所以,当我们想在字串中进行变量代换和包 含\n(换行符)等转义序列时,就应该使用双引号。

实现直播源普通格式转DPL格式

以下是第一个尝试例子,代码分别存储为*.html和todpl.php放在安装有PHP环境的服务器网站同一目录下,打开html文件输入示例内容,点击提交,获得结果。

<!DOCTYPE html>
<html>
        <head>
                <meta lang="en">
                <meta charset="UTF-8">
                <title>格式转换</title>
                <style type="text/css">
                        .txtarea{
                        height:420px;
                        width:600px;
                        }
                </style>
        </head>
        <body>
                <form action="todpl.php" method="post">
                        <textarea class="txtarea" name="zbytxt"></textarea>
                        </br>
                        <input type="submit" value="提交">
                </form>
        </body>
</html>

以下是PHP文档的部分..

//todpl.php文件
<?php
        $contents = $_POST['zbytxt'];
        $acontents = explode("\n",$contents);
        $count = 0;
        define("DPLHEAD", "DAUMPLAYLIST&#13;&#10;playname=&#13;&#10;topindex=0&#13;&#10;");
        echo DPLHEAD;
        foreach($acontents as $itemtv)
        {
                $patterna= '/(.*?),([a-zA-Z0-9]{2,6}:[\S]*)/';
                $statusmatch = preg_match($patterna,$itemtv,$matches);//print_r($matches);
                if($statusmatch == 1){
                        echo $count.'*file*'.$matches[2].'&#13;&#10;';
                        echo $count.'*title*'.$matches[1].'&#13;&#10;';
                        echo $count.'*played*0'.'&#13;&#10;';
                        $count ++;
                }
                else{
                        //echo '匹配非直播源的行<br />';
                }
        }
?>

打开html文件在文本区域输入以下示例内容

徐州-1,http://stream1.huaihai.tv/xwzh/sd/live.m3u8
徐州-2,http://stream1.huaihai.tv/jjsh/sd/live.m3u8
徐州-3,http://stream1.huaihai.tv/wyys/sd/live.m3u8
徐州-4,http://stream1.huaihai.tv/ggpd/sd/live.m3u8

后续

2018-03-28 终于搞出个能用的东西:/tvlistconvert.html
2018-04-01 把输入和结果整合在同一个页面

点赞
  1. kevinvun说道:

    @鬼手六 放在网络地址上直播源文本文档要怎么写?有例子吗?mitv直播源播放器可以吗?有什么网络地址可以放直播源文本的呢?可以介绍个吗?

  2. kevinvun说道:

    请问要如何把自定义直播源播放器的txt file直接更新,不需要一直更新在闪存里。

    1. 鬼手六说道:

      @kevinvun 有些自定义直播源的播放器可以进行网络自定义,比如大屏播放器,比如友窝,比如PP壳,你可以把你的直播源文本文档放在网络地址上,到时候更新这个地址的源,就可以不受设备限制了...

      1. kevinvun说道:

        @鬼手六 放在网络地址上直播源文本文档要怎么写?有例子吗?mitv直播源播放器可以吗?有什么网络地址可以放直播源文本的呢?可以介绍个吗?

  3. q136947144说道:

    HTML 怎么写 :lol: :exclaim:

    1. 鬼手六说道:

      @q136947144 都有提供例子了啊.

发表评论

电子邮件地址不会被公开。 必填项已用*标注