php获取页面视频文件,PHP获取各大视频网站页面中的Flash播放地址

先看一个简单的,我用PHP实现了这个功能,我觉得用PHP来做这项工作简直是一种享受!使用其提供的强大的HTML页面处理函数和正则表达式,短短的几行代码就能搞定这个功能。

贴一下关键代码:

//获取优酷页面中的flash地址

function get_flash_url( $url )

{

$lines = file($url);

foreach ($lines as $linenum=> $line) {

preg_match_all('||',$line,$result);

$swfurl=$result[1][0];

if(!emptyempty($swfurl))

return $swfurl;

}

}

?>

$url=$_SERVER["QUERY_STRING"];

$flashurl= get_flash_url($url);

echo ( $flashurl );

?>

比如这个文件我们存为 test.php,那么我们只需要运行test.php?优酷视频的url 就可以解析出FLASH地址了.

思路很简单,就是先看看优酷视频网页的HTML代码里关键FLASH地址那段的特征,随便找个网页,比如我们可以看到这一段:

flash地址:

然后使用正则表达式来将其中的地址段匹配掉,就OK了,上面只是单个的,后来找到一个升级的方法,可以自动获取各大视频网站flash视频播放地址,目前已支持新浪播客、优酷网、土豆网、酷6网、搜狐视频、56网、奇艺网、凤凰网等视频网站的视频播放页链接。

代码如下:

if (!emptyempty($_GET['url']))

{

$web_video = new free_flash_video();

$web_video->index();

}

/**

* 获取视频地址

* @author qiufeng

* @link http://www.fengdingbo.com

*

*/

class free_flash_video{

public function index()

{

// 获取正常视频地址

$url = $_GET['url'];

if ($url)

{

$parse = parse_url($url);

isset($parse['host']) && $host = $parse['host'];

$methods = array(

"www.tudou.com"  => "tudou",

"v.youku.com"  => "youku",

"v.ku6.com"  => "ku6",

"tv.sohu.com"  => "sohu",

"video.sina.com.cn" => "sina",

"www.56.com"  => "five_six",

"www.iqiyi.com"  => "iqiyi",

"v.ifeng.com"  => "ifeng",

"www.yinyuetai.com" => "yinyuetai",

);

isset($methods[$host]) && print_r($this->$methods[$host]($url));

}

}

/**

* 优酷网

* // http://www.youku.com

* @param string $url

*/

private function youku($url)

{

preg_match('/id_(.*).html/', $url,$url);

if (isset($url[1]))

{

return "http://static.youku.com/v/swf/qplayer.swf?VideoIDS={$url[1]}&=&isAutoPlay=true&embedid";

}

}

/**

* 土豆网

* // http://www.tudou.com

* @param string $url

*/

private function tudou($url)

{

$data = file_get_contents($url);

// 匹配真实url地址所需的iid编号

preg_match('/iid:(.*)/', $data, $result);

if (isset($result[1]))

{

$url = trim($result[1]);

return "http://www.tudou.com/player/skin/plu.swf?iid={$url}";

}

}

/**

* 酷6网

* // http://www.ku6.com

* @param string $url

*/

private function ku6($url)

{

// 匹配真实url地址

preg_match('/show/(.*).{1}/', $url, $result);

if (isset($result[1]))

{

return "http://player.ku6.com/refer/{$result[1]}/v.swf&auto=1";

}

}

/**

* 搜狐视频

* // http://tv.sohu.com

* @param string $url

*/

private function sohu($url)

{

$data = file_get_contents($url);

// 匹配真实url地址

preg_match('//', $data, $result);

if (isset($result[1]))

{

return $result[1];

}

}

/**

* 新浪播客

* // http://video.sina.com.cn

* @param string $url

*/

private function sina($url)

{

$data = file_get_contents($url);

// 匹配真实url地址

preg_match("/swfOutsideUrl:'(.*)',/", $data, $result);

if (isset($result[1]))

{

return $result[1];

}

}

/**

* 56网

* // http://www.56.com

* @param string $url

*/

private function five_six($url)

{

// 取出视频所需key

preg_match('/(v_.*).html/', $url, $result);

if (isset($result[1]))

{

return "http://player.56.com/{$result[1]}.swf";

}

}

/**

* 奇艺网

* // http://www.qiyi.com

* @param string $url

*/

private function iqiyi($url)

{

$data = file_get_contents($url);

// 取出视频所需key

preg_match('/("videoId":"(.*)")|(data-player-videoid="(.*)")/U', $data, $result);

if (isset($result[4]))

{

return "http://www.iqiyi.com/player/20130315154043/SharePlayer.swf?vid={$result[4]}";

}

}

/**

* 凤凰网

* // http://www.ifeng.com

* @param string $url

*/

private function ifeng($url)

{

// 取出视频所需key

preg_match('/d+/(.*)./', $url, $result);

if (isset($result[1]))

{

return "http://v.ifeng.com/include/exterior.swf?guid={$result[1]}&fromweb=sinaweibo&AutoPlay=true";

}

}

}

?>

PHP API调用实例

/tools/web_video.php?url=视频页面地址

eg:/web_video.php?url=http://www.iqiyi.com/dianying/20130217/e72ffd87c2e9c5af.html

(责任编辑:最模板)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1790. 仅执行一次字符串交换能否使两个字符串相等

文章目录1. 题目2. 解题1. 题目 给你长度相等的两个字符串 s1 和 s2 。 一次 字符串交换 操作的步骤如下:选出某个字符串中的两个下标(不必不同),并交换这两个下标所对应的字符。 如果对 其中一个字符串 执行 最多一次字符串交换…

gradle 上传jar包_Gradle学习记录014 关于依赖的声明

详细学习Gradle构建的依赖声明。该学习记录基于Gradle官方网站资料。本篇参考链接如下:https://docs.gradle.org/current/userguide/declaring_dependencies.html声明一个模块作为依赖通常声明一个模块作为依赖,需要指定这个模块的版本。Gradle提供了一套…

win10版本查看_想知道电脑中安装的win10版本号,用这3招就对了,一键查看

自从微软在Windows 10中更改了发布模型后,很多用户就对找出他们在电脑上安装的Windows 10版本感兴趣。大家可能都已经知道,微软不会再发布Windows的主要版本,而是会不断发布更新,这让人想起许多Linux发行版的滚动发行模型。如果你…

php熊掌号api,织梦dedecms熊掌号自动API提交当日资源php代码

你是不会代码,没有代码基础?是否每次还需要登录熊掌号后台?每次发表文章都需要登录熊掌号后台站点天级收录,进行提交资源网站链接?今天分享一段代码轻松解决这些问题。require_once ("include/common.inc.php&quo…

LeetCode 1791. 找出星型图的中心节点(图出入度)

文章目录1. 题目2. 解题1. 题目 有一个无向的 星型 图,由 n 个编号从 1 到 n 的节点组成。 星型图有一个 中心 节点,并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。 给你一个二维整数数组 edges ,其中 edges[i] [ui, vi] 表示在节…

ole db 错误 通讯链接失败_西门子PLC1200的S7通讯(同一项目下)--GET接收指令

西门子PLC1200的S7通讯(同一项目下)--GET接收指令1.0 首先在同一项目下,组态两个PL,如下图,组态了2个1200PLC 1214C的PLC2.0 点击链接里面,在窗口的右上角选择S7连接,这个窗口可以看到本地ID&am…

python求超级素数代码_C语言求超级素数

展开全部不考虑时间的需求&#xff0c;就用最简单的素数判断函数了#include #include #include bool isPrime(int n){for(int i 2; i < sqrt(n); i){if(n%i 0)return false;}return true;}int main(){int maxprime 0, count 0;for(int i 101; i {int temp i;bool fla…

php中写salt,请快速检查这个PHP+SALT实现-不工作?

在教程的基础上,使用salt实现一个基本的用户注册登录系统。目前我在注册阶段使用这个:define(SALT_LENGTH, 9);function generateHash($plainText, $salt null){if ($salt null){$salt substr(md5(uniqid(rand(), true)), 0, SALT_LENGTH);}else{$salt substr($salt, 0, SA…

电磁波

可见光谱只占有宽广的电磁波谱的一小部分。电磁波&#xff0c;又称电磁辐射&#xff0c;是由同相振荡且互相垂直的电场与磁场在空间中以波的形式传递能量和动量&#xff0c;其传播方向垂直于电场与磁场构成的平面。电磁辐射的载体为光子&#xff0c;不需要依靠介质传播&#xf…

LeetCode 1792. 最大平均通过率(优先队列)

文章目录1. 题目2. 解题1. 题目 一所学校里有一些班级&#xff0c;每个班级里有一些学生&#xff0c;现在每个班都会进行一场期末考试。 给你一个二维数组 classes &#xff0c;其中 classes[i] [passi, totali] &#xff0c;表示你提前知道了第 i 个班级总共有 totali 个学生…

分段线性插值c语言程序_【短道速滑】OpenCV中cvResize函数使用双线性插值缩小图像长宽大小一半时速度飞快(比最近邻还快)之异象解析和自我实现。...

点击上方↑↑↑“OpenCV学堂”关注我作者网名&#xff1a;laviewpbt是图像处理&#xff0c;算法实现与加速优化方面的大神&#xff01;其开发的imageshop软件大小只有1MB&#xff0c;却实现了非常丰富与复杂的各种图像处理功能&#xff0c;邮箱地址为&#xff1a;Email: laview…

端口可以随便设置吗_驱动可以随便更新吗?

答案是&#xff0c;真的不可以&#xff0c;我真的吐了&#xff0c;当你用驱动感觉合适&#xff0c;显卡驱动没有卡屏或者黑屏什么的&#xff0c;网卡用着正常的话就不要盲目更新了&#xff0c;我今天就是更新了网卡&#xff0c;结果就断网了&#xff0c;删除了恢复旧版没用&…

IOS学习:常用第三方库(GDataXMLNode:xml解析库)

IOS学习&#xff1a;常用第三方库&#xff08;GDataXMLNode&#xff1a;xml解析库&#xff09; 解析 XML 通常有两种方式&#xff0c;DOM 和 SAX&#xff1a; DOM解析XML时&#xff0c;读入整个XML文档并构建一个驻留内存的树结构&#xff08;节点树&#xff09;&#xff0c;通…

php必须汉字,php怎么只保留汉字

php只保留汉字的实现方法&#xff1a;首先创建一个PHP示例文件&#xff1b;然后通过mb_convert_encoding进行转码&#xff1b;最后通过preg_match_all实现过滤掉非汉字字符只保留中文字符即可。本文操作环境&#xff1a;windows7系统、PHP7.1版&#xff0c;DELL G3电脑PHP实现过…

LeetCode 1793. 好子数组的最大分数(单调栈)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums &#xff08;下标从 0 开始&#xff09;和一个整数 k 。 一个子数组 (i, j) 的 分数 定义为 min(nums[i], nums[i1], ..., nums[j]) * (j - i 1) 。一个 好 子数组的两个端点下标需要满足 i < k < j 。 请你返回…

hbase的2.2.4版本支持哪个版本的hadoop_Hadoop 2.7 不停服升级到 3.2 在滴滴的实践

桔妹导读&#xff1a;Hadoop 3的第一个稳定版本在2017年底就已经发布了&#xff0c;有了很多重大的改进。在HDFS方面&#xff0c;支持了Erasure Coding、More than 2 NameNodes、Router-Based Federation、Intra-datanode balancer 等功能&#xff0c;大家可能对这些功能很感兴…

pcb只开窗不镀锡_案例图解射频PCB设计要点

在电子产品和设备中&#xff0c;电路板是一个不可缺少的部件&#xff0c;它起着电路系统的电气和机械等的连接作用。如何将电路中的元器件按照一定的要求&#xff0c;在PCB上排列组合起来&#xff0c;是PCB设计师的主要任务之一。布局设计不是简单的将元器件在PCB上排列起来&am…

HDFS Java API 实践

文章目录1. 启动 Hadoop 集群2. 使用 HDFS Shell3. 使用 HDFS Web UI4. 安装 Eclipse IDE4.1 上传文件4.2 查询文件位置4.3 创建目录4.4 读取文件内容4.5 写入文件1. 启动 Hadoop 集群 安装集群&#xff1a;https://michael.blog.csdn.net/article/details/114607857 启动命令…

异步程序相关

gevent <-greenlet <- libev/libevent <- (select、epoll、kqueue) libevent是一个事件触发的网络库&#xff0c;适用于windows、linux、bsd等多种平台&#xff0c;内部使用select、epoll、kqueue等系统调用管理事件机制 libev是libevent之后的一个事件驱动的编程框架…

python 一组数据 正态分布散点图_利用Python进行数据分析之多元线性回归案例

线性回归模型属于经典的统计学模型&#xff0c;该模型的应用场景是根据已知的变量&#xff08;自变量&#xff09;来预测某个连续的数值变量&#xff08;因变量&#xff09;。例如&#xff0c;餐厅根据每天的营业数据&#xff08;包括菜谱价格、就餐人数、预定人数、特价菜折扣…