欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

php 模版解析实例

程序员文章站 2022-06-17 15:03:57
...
下面是一个php 模版解析的例子。

通过正则表达式将
{youku id_XMTc5ODgwOTA4} 转对对应的播放代码。


header('Content-type:text/html; charset=utf-8');

$template = '

{youku id_XMTc5ODgwOTA4}

{youku id_XMzA5NTUwOTky}

{youku id_XMzEwMTQyMjA4}

{youku id_XMjYzNTE0MTA4}

{youku id_XMzEwNDMwODk2}

{youku id_XMjk4NjA3Njk2}

{youku id_XMjQ3ODQwNDYw}

{youku id_XMjk4MjA2NDI0}

{youku id_XMzEwNDIyMTY4}

{youku id_XMzA5ODUzMjI4}

{youku id_XMzEwMzMxNjc2}

{youku id_XMzEwMTk4Njky}

{youku id_XMTA3OTA4MzQw}

{youku id_XMjQ1NzI1ODcy}

{youku id_XMjI4Mzc0OTY0}

';

$cfgYouku = array( array("rege"=>"/\s*\{youku\s*id_(.*)}\s*/i","callback"=>"compile"));

foreach ($cfgYouku as $val){

if(isset($val["callback"]))

{

$template = preg_replace_callback($val["rege"], $val["callback"], $template);

}

}

/**

*

* forjobs

* @param unknown_type $matched

*/

function compile($matched)

{

$url = $matched[0]; www.2cto.com

preg_match("/id\_(\w+)/", $url, $matches);

if (empty($matches)){

preg_match("#v_playlist\/#", $url, $mat);

if(!$mat) return false;

$html = self::_fget($url);

preg_match("#videoId2\s*=\s*\'(\w+)\'#", $html, $matches);

if(!$matches) return false;

}

$link = "http://v.youku.com/player/getPlayList/VideoIDS/{$matches[1]}/timezone/+08/version/5/source/out?password=&ran=2513&n=3";

$retval = fileGetContent( $link );

if ($retval) {

$json = json_decode($retval, true);

$data['img'] = $json['data'][0]['logo'];

$data['title'] = $json['data'][0]['title'];

$data['url'] = $url;

$data['swf'] = "http://player.youku.com/player.php/sid/{$matches[1]}/v.swf";

if( $data ) $data['object'] = "

".$data['title']."

"."";

return $data['object'];

} else {

return false;

}

}

/**

*

* @author murain

* @param String $url

*/

function fileGetContent($url)

{

$ch = curl_init();

$timeout = 10;

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

$contents = trim(curl_exec($ch));

curl_close($ch);

return $contents;

}