如何通过正则表达式 preg_match 查找特定字符串

How to find specific string by regex preg_match

我想通过在 php 中应用 preg_match 来获得 link 这是我的代码

$string = playlist: [{
        image: "http://77.81.98.55/i/01/00012/d6ntku2p3tnn.jpg",
        provider: "http://static.vidzi.tv/nplayer/vidzi.swf",
        sources: [{
            file: "http://vidzi.tv/6c90fqha0k9i-4b4a926f75863405c12bfaeb331b331c.m3u8?embed=",
            type: 'hls'
        },{
        file: "http://77.81.98.55/gzuqiu4h342qedz7nknr5h3sli74im5vv7f2ae7z2pxjxhqnqxk4625rsdpq/v.mp4"
        }]
        ,tracks: [{file: "http://vidzi.tv/6c90fqha0k9i-4b4a926f75863405c12bfaeb331b331c.vtt", kind: "thumbnails"}]
    }]

preg_match('/file: "(.*?)",/i', $result, $dl_link);

echo '<pre>';
print_r($dl_link);
echo '</pre>';

输出为

Array
(
    [0] => file: "http://vidzi.tv/6c90fqha0k9i-4b4a926f75863405c12bfaeb331b331c.m3u8?embed=",
    [1] => http://vidzi.tv/6c90fqha0k9i-4b4a926f75863405c12bfaeb331b331c.m3u8?embed=
)

从上面preg_match我第一个

file: "http://vidzi.tv/6c90fqha0k9i-4b4a926f75863405c12bfaeb331b331c.m3u8?embed="

但我想得到这个

file: "http://77.81.98.55/gzuqiu4h342qedz7nknr5h3sli74im5vv7f2ae7z2pxjxhqnqxk4625rsdpq/v.mp4"

帮我谢谢

由于这似乎已损坏 JSON 字符串,您可以使用此正则表达式:

preg_match_all('/file:\h*"([^"]*)"/i', $string, $m);

print_r($m[1][1]);
//=> http://77.81.98.55/gzuqiu4h342qedz7nknr5h3sli74im5vv7f2ae7z2pxjxhqnqxk4625rsdpq/v.mp4