php preg_match 查找所有匹配的行
php preg_match find all lines which have match
字符串是:
#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
我想找到所有 prog_index.m3u8 网址。我的代码是:
preg_match_all('/(.*?)prog_index.m3u8(.*?)/mis', $get, $found);
我的解决方案是:
preg_match_all('/^\d+.*prog_index.m3u8.*/mi', $get, $found);
print_r($found);
基本上包括所有以数字开头的行,但在行尾停止匹配(因此 /mi 而不是 /mis)。
不用正则表达式也可以:
$result = array_filter(explode("\n", $get), function ($i) {
return $i[0] != '#' &&
array_pop(explode('/', parse_url($i, PHP_URL_PATH))) == 'prog_index.m3u8';
});
通过这种方式,您可以确定该行是 URL,文件名是 prog_index.m3u8
。
字符串是:
#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
我想找到所有 prog_index.m3u8 网址。我的代码是:
preg_match_all('/(.*?)prog_index.m3u8(.*?)/mis', $get, $found);
我的解决方案是:
preg_match_all('/^\d+.*prog_index.m3u8.*/mi', $get, $found);
print_r($found);
基本上包括所有以数字开头的行,但在行尾停止匹配(因此 /mi 而不是 /mis)。
不用正则表达式也可以:
$result = array_filter(explode("\n", $get), function ($i) {
return $i[0] != '#' &&
array_pop(explode('/', parse_url($i, PHP_URL_PATH))) == 'prog_index.m3u8';
});
通过这种方式,您可以确定该行是 URL,文件名是 prog_index.m3u8
。