最模板 - 外贸网站建设,外贸网站模板

最模板

当前位置: 首页 > 建站教程 > php教程 >

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

时间:2014-06-09 16:40来源: 作者: 点击: 次
先看一个简单的,我用PHP实现了这个功能,我觉得用PHP来做这项工作简直是一种享受!使用其提供的强大的HTML页面处理函数和正则表达式,短短的几行代码就能搞定这个功能。 贴一下关键代码

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

PHP API调用实例

  1. /tools/web_video.php?url=视频页面地址 
  2. eg:/web_video.php?url=http://www.iqiyi.com/dianying/20130217/e72ffd87c2e9c5af.html 
(责任编辑:admin)
------分隔线----------------------------
栏目列表
推荐内容