当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2014-01-08 15:51:26 浏览: 评论:0 

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

贴一下关键代码:

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

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

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

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

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

代码如下:

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

PHP API调用实例

  1. /tools/web_video.php?url=视频页面地址 
  2. eg:/web_video.php?url=http://www.iqiyi.com/dianying/20130217/e72ffd87c2e9c5af.html 

Tags: 获取 视频 Flash播放地址

分享到: