【问题标题】:php preg_match & regexphp preg_match & 正则表达式
【发布时间】: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


【解决方案1】:

仅根据您提供的示例输入,添加\S+,这意味着选择非空白字符。

preg_match('/'.$quality.'\/prog_index.m3u8\S+/', $url, $C);
                                           ^^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 2014-06-28
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多