【发布时间】:2014-03-22 21:53:47
【问题描述】:
我想选择用户发布的 url。所以我想使用 preg_match。
字符串:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=350000
128/prog_index.m3u8?key=49bfee85b05d117a2906368428094e94
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=750000
500/prog_index.m3u8?key=49bfee85b05d117a2906368428094e94
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1000000
750/prog_index.m3u8?key=49bfee85b05d117a2906368428094e94
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1250000
1000/prog_index.m3u8?key=49bfee85b05d117a2906368428094e94
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1750000
1500/prog_index.m3u8?key=49bfee85b05d117a2906368428094e94
我的 PHP 代码:
<?php
$quality = $_POST['quality'];
$url = ''.$serviceUrl.'/'.$path.'';
$url = file_get_contents($url);
preg_match('/'.$quality.'\/prog_index.m3u8/', $url, $C);
print_r($C);
?>
输出:
Array
(
[0] => 1500/prog_index.m3u8
)
但我想要这样:1500/prog_index.m3u8?key=49bfee85b05d117a2906368428094e94
【问题讨论】:
-
呃...只需在您的正则表达式末尾添加
.+?尽管prog_index\.m3u8,你真的应该逃离这个时期。 -
您应该转义(或
(int)case)用户输入;见preg_quote。然后使用file()和preg_grep("~^$int/~")在行间搜索要简单得多。
标签: php regex preg-match