2015-07-12 12 views
2

找到特定的字符串想在PHP这里应用的preg_match以获得链接是我的代码我如何通过正则表达式的preg_match

$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" 

帮我感谢

+0

尝试使用'(文件:\“HTTP:\/\/\ d {2}。*?“)' –

+0

使用'preg_match_all'并从结果数组中取得第二个匹配 – anubhava

+0

分配给变量$ string的数据看起来应该是json - 是吗? – RamRaider

回答

0

由于这似乎被打破JSON字符串,你可以使用这个表达式:

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

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