解析作为外部链接返回的HTML

时间:2017-01-30 23:17:05

标签: php regex parsing html-parsing

更新:这是我基于正则表达式的地方..

http://www.phpliveregex.com/p/iLL

我无法想象我的生活。我认为它很简单,但显然不是。

在一个应用程序上,我试图返回一个url,已经在一个单独的页面上解析,以避免跨域错误并返回该URL。问题是它在url返回IE的末尾添加了#.m3u8。

http://ipaddress/stringHere/stringHere/link.m3u8#.m3u8

这是我的代码..

此页面是进行解析的地方。

<?php 
header("Access-Control-Allow-Origin: *");
header("Connection: keep-alive");
header("Content-Type: video/vnd.apple.mpegurl");
header("Accept-Ranges: bytes");

?>
<?php
ob_start(); // ensures anything dumped out will be caught
$html = file_get_contents("https://www.example.com/s/");

preg_match_all(
    '/((?:(?:f|ht){1}tp:\/\/)[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+.m3u8)/',
    $html,
    $posts, // will contain the article data
    PREG_SET_ORDER // formats data into an array of posts
);

foreach ($posts as $post) {
    $link = $post[1];


// clear out the output buffer
while (ob_get_status()) 
{
    ob_end_clean();
}

// no redirect
header( "Location: $link" );
}

?>

这是应用程序调用的页面,并返回了链接。

<?php 
header("Access-Control-Allow-Origin: *");
header("Connection: keep-alive");
header("Content-Type: video/vnd.apple.mpegurl");
header("Accept-Ranges: bytes");
header("Cache-Control: private, max-age=0, must-revalidate");
?>
<html>
<body>
<?php
include ("parse.php");
?>
</body>
</html>

结果是

http://ipAddress/hls/3691308f2a4c2f6983f2880d32e29c84-313391.m3u8#.m3u8

我真正需要的是将ip替换为特定的ip并删除#.m3u8

http://replacedAddress/hls/3691308f2a4c2f6983f2880d32e29c84-313391.m3u8

我希望有人可以提供帮助。我把头发拉了出来。

0 个答案:

没有答案