【发布时间】:2014-02-02 09:55:13
【问题描述】:
我的网站上有一些视频源,我想在 XBMC 中打开,但无法打开。
所以我正在考虑抓取链接和频道名称并将它们输出到我的媒体中心可以打开的一些文件(每个频道一个文件)。我必须在一个小型的 linux 机器上完成,因为我不知道 bash 或 python,但是一些 php(不多),我想我会使用 PHP 来完成这项任务。但是我在使用正则表达式和 php 的输出时遇到了一些问题。
包含提要的网站如下所示:
... Lots of HTML before this part
<a href="javascript:changeChannel('http://live.provider.com/something/something_else/1.abcdefg.m3u8', 1);">First Channel</a><br>
<a href="javascript:changeChannel('http://live.provider.com/something/something_else/2.abcdefg.m3u8', 2);">Second Channel</a><br>
<a href="javascript:changeChannel('http://live.provider.com/something/something_else/3.abcdefg.m3u8'', 3);">Third Channel</a><br>
.... // More channels and other html below here..
我要提取的是链接和url文本:
例如:http://live.provider.com/something/something_else/1.abcdefg.m3u8
例如:第一频道
等等
目前我的代码如下所示:
$streamSite = "http://link.to/feed-website.html";
function writeFile($url, $channel) {
$File = $channel.".strm";
$Handle = fopen($File, 'w');
fwrite($Handle, $url);
fclose($Handle);
}
$input = @file_get_contents($streamSite) or die("Could not access file: $url");
$regexp = "(((f|ht){1}tp:\/\/)[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)";
if(preg_match_all($regexp, $input, $matches, PREG_SET_ORDER)) {
foreach($matches as $match) {
echo serialize($match);
echo "\r\n";
}
unset($match);
}
?>
使用当前的正则表达式,我应该抓取 url。我已经在http://regexr.com/ 上测试了正则表达式,它在那里工作。
目前我只是将结果打印到控制台。
当前输出如下所示:
a:3:{i:0;s:97:"http://live.provider.com/something/something_else/1.abcdefg.m3u8";i:1;s:7:"http://";i:2;s:2:"ht";}
a:3:{i:0;s:97:"http://live.provider.com/something/something_else/2.abcdefg.m3u8";i:1;s:7:"http://";i:2;s:2:"ht";}
a:3:{i:0;s:97:"http://live.provider.com/something/something_else/3.abcdefg.m3u8";i:1;s:7:"http://";i:2;s:2:"ht";}
我不知道链接之前和之后的文本来自哪里。是我的序列化失败还是正则表达式?
你能帮我处理正则表达式吗,这样我就可以抓取 url 和文本并将其放入一个数组中,然后我可以循环并使用我编写的函数将内容写入 .strm 文件?
提前致谢!
【问题讨论】: