php专区

 首页 > php专区 > PHP应用 > 常用功能 > PHP获取各大视频网站页面中的Flash播放地址 - ph

PHP获取各大视频网站页面中的Flash播放地址 - ph

分享到:
【字体:
导读:
          先看一个简单的,我用PHP实现了这个功能,我觉得用PHP来做这项工作简直是一种享受!使用其提供的强大的HTML页面处理函数和正则表达式,短短的...

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

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

贴一下关键代码:

  1.  //获取优酷页面中的flash地址 
  2.  function get_flash_url( $url ) 
  3.  { 
  4.   $lines = file($url); 
  5.   foreach ($lines as $linenum=> $line) {       
  6.       preg_match_all('|]+)" />|',$line,$result); 
  7.       $swfurl=$result[1][0]; 
  8.       if(!emptyempty($swfurl)) 
  9.     return $swfurl
  10.   } 
  11.  } 
  12. ?> 
  13.  $url=$_SERVER["QUERY_STRING"]; 
  14.  
  15.  $flashurl= get_flash_url($url); 
  16.  
  17.  echo ( $flashurl ); 
  18.  
  19. ?> 

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

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

  1. class="item">class="label">flash地址:  "text" id="link2" value="http://player.youku.com/player.php/sid/XMTU1MzcxMzAw/v.swf" /> 

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

代码如下:

  1. if (!emptyempty($_GET['url'])) 
  2.  $web_video = new free_flash_video(); 
  3.  $web_video->index(); 
  4. /** 
  5.  * 获取视频地址 
  6.  * @author qiufeng  
  7.  * @link http://www.fengdingbo.com 
  8.  * 
  9.  */ 
  10. class free_flash_video{ 
  11.  
  12.  public function index() 
  13.  { 
  14.   // 获取正常视频地址 
  15.   $url = $_GET['url']; 
  16.   if ($url
  17.   { 
  18.    $parse = parse_url($url); 
  19.  
  20.    isset($parse['host']) && $host = $parse['host']; 
  21.  
  22.    $methods = array
  23.      "www.tudou.com"  => "tudou"
  24.      "v.youku.com"  => "youku"
  25.      "v.ku6.com"  => "ku6"
  26.      "tv.sohu.com"  => "sohu"
  27.      "video.sina.com.cn" => "sina"
  28.      "www.56.com"  => "five_six"
  29.      "www.iqiyi.com"  => "iqiyi"
  30.      "v.ifeng.com"  => "ifeng"
  31.      "www.yinyuetai.com" => "yinyuetai"
  32.    ); 
  33.  
  34.    isset($methods[$host]) && print_r($this->$methods[$host]($url)); 
  35.  
  36.   } 
  37.  } 
  38.  
  39.  /** 
  40.   * 优酷网 
  41.   * // http://www.youku.com 
  42.   * @param string $url 
  43.   */ 
  44.  private function youku($url
  45.  { 
  46.   preg_match('/id_(.*).html/'$url,$url); 
  47.  
  48.   if (isset($url[1])) 
  49.   { 
  50.    return "http://static.youku.com/v/swf/qplayer.swf?VideoIDS={$url[1]}&=&isAutoPlay=true&embedid"
  51.   } 
  52.  } 
  53.  
  54.  /** 
  55.   * 土豆网 
  56.   * // http://www.tudou.com 
  57.   * @param string $url 
  58.   */ 
  59.  private function tudou($url
  60.  { 
  61.   $data = file_get_contents($url); 
  62.   // 匹配真实url地址所需的iid编号 
  63.  
  64.   preg_match('/iid:(.*)/'$data$result); 
  65.   if (isset($result[1])) 
  66.   { 
  67.    $url = trim($result[1]); 
  68.    return "http://www.tudou.com/player/skin/plu.swf?iid={$url}"
  69.   } 
  70.  } 
  71.  
  72.  /** 
  73.   * 酷6网 
  74.   * // http://www.ku6.com 
  75.   * @param string $url 
  76.   */ 
  77.  private function ku6($url
  78.  { 
  79.   // 匹配真实url地址 
  80.   preg_match('/show/(.*).{1}/'$url$result); 
  81.  
  82.   if (isset($result[1])) 
  83.   { 
  84.    return "http://player.ku6.com/refer/{$result[1]}/v.swf&auto=1"
  85.   } 
  86.  } 
  87.  
  88.  /** 
  89.   * 搜狐视频 
  90.   * // http://tv.sohu.com 
  91.   * @param string $url 
  92.   */ 
  93.  private function sohu($url
  94.  { 
  95.   $data = file_get_contents($url); 
  96.   // 匹配真实url地址 
  97.   preg_match('//'$data$result); 
  98.   if (isset($result[1])) 
  99.   { 
  100.    return $result[1]; 
  101.   } 
  102.  } 
  103.  
  104.  /** 
  105.   * 新浪播客 
  106.   * // http://video.sina.com.cn 
  107.   * @param string $url 
  108.   */ 
  109.  private function sina($url
  110.  { 
  111.   $data = file_get_contents($url); 
  112.   // 匹配真实url地址 
  113.   preg_match("/swfOutsideUrl:'(.*)',/"$data$result); 
  114.   if (isset($result[1])) 
  115.   { 
  116.    return $result[1]; 
  117.   } 
  118.  } 
  119.  
  120.  /** 
  121.   * 56网 
  122.   * // http://www.56.com 
  123.   * @param string $url 
  124.   */ 
  125.  private function five_six($url
  126.  { 
  127.   // 取出视频所需key 
  128.   preg_match('/(v_.*).html/'$url$result); 
  129.  
  130.   if (isset($result[1])) 
  131.   { 
  132.    return "http://player.56.com/{$result[1]}.swf"
  133.   } 
  134.  } 
  135.  
  136.  /** 
  137.   * 奇艺网 
  138.   * // http://www.qiyi.com 
  139.   * @param string $url 
  140.   */ 
  141.  private function iqiyi($url
  142.  { 
  143.   $data = file_get_contents($url); 
  144.  
  145.   // 取出视频所需key 
  146.   preg_match('/("videoId":"(.*)")|(data-player-videoid="(.*)")/U'$data$result); 
  147.  
  148.   if (isset($result[4])) 
  149.   { 
  150.    return "http://www.iqiyi.com/player/20130315154043/SharePlayer.swf?vid={$result[4]}"
  151.   } 
  152.  } 
  153.  
  154.  /** 
  155.   * 凤凰网 
  156.   * // http://www.ifeng.com 
  157.   * @param string $url 
  158.   */ 
  159.  private function ifeng($url
  160.  { 
  161.   // 取出视频所需key 
  162.   preg_match('/d+/(.*)./'$url$result); 
  163.  
  164.   if (isset($result[1])) 
  165.   { 
  166.    return "http://v.ifeng.com/include/exterior.swf?guid={$result[1]}&fromweb=sinaweibo&AutoPlay=true"
  167.   } 
  168.  } 
  169. ?> 

PHP API调用实例

  1. /tools/web_video.php?url=视频页面地址 
  2. eg:/web_video.php?url=http://www.iqiyi.com/dianying/20130217/e72ffd87c2e9c5af.html 
分享到:
PHP Curl多线程实现原理与实例详解 - php...
PHP Curl多线程实现原理与实例详解 因为工作中我们经常会需要使用到Curl多线程来处理一些事情,不得己就深入了对Curl多线程研究了,下面小编来给各位同学介绍一下Curl多线程实例与原理吧. 相信许多人对php手册中语焉不详的curl_multi一族的函数头疼不已,它们文档少,给的例子更是简单的让你无...
php 获取qq用户昵称和在线状态实例 - php...
php 获取qq用户昵称和在线状态实例 如果我们利用php获取QQ用户名与在线状态QQ并未给我们提供api接口了,如果要获取我们可以通过QQ空间或QQ网页版聊天来实现。 QQ通过返回不同的图片,来表示在线或离线,图标也随之变换,既然图片不同,那么,返回的HTTP头信息中的Content-Length 也一定不同,而且,...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……