dtcyv3985 2016-02-02 06:13
浏览 84
已采纳

php preg_match找到所有匹配的行

The string is:

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=350000
128/prog_index.m3u8?key=2dd12d6d79fa163d539952ec25c6c969&app=com.dcom&part=1-1
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=500000
256/prog_index.m3u8?key=2dd12d6d79fa163d539952ec25c6c969&app=com.dcom&part=1-1
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=750000
500/prog_index.m3u8?key=2dd12d6d79fa163d539952ec25c6c969&app=com.dcom&part=1-1
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1000000
750/prog_index.m3u8?key=2dd12d6d79fa163d539952ec25c6c969&app=com.dcom&part=1-1
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1250000
1000/prog_index.m3u8?key=2dd12d6d79fa163d539952ec25c6c969&app=com.dcom&part=1-1
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1750000
1500/prog_index.m3u8?key=2dd12d6d79fa163d539952ec25c6c969&app=com.dcom&part=1-1

And I want to find all prog_index.m3u8 urls. My code is:

preg_match_all('/(.*?)prog_index.m3u8(.*?)/mis', $get, $found);
  • 写回答

2条回答 默认 最新

  • duanjiu3486 2016-02-02 06:55
    关注

    You can do it without regex:

    $result = array_filter(explode("
    ", $get), function ($i) {
        return $i[0] != '#' &&
          array_pop(explode('/', parse_url($i, PHP_URL_PATH))) == 'prog_index.m3u8'; 
    });
    

    In this way you can be sure that the line is a URL with prog_index.m3u8 as filename.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图2.0 版本点聚合中Marker的位置无法实时更新,如何解决呢?
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题