模板內容含自定義標簽 {youku id_XMTc5ODgwOTA4},需解析為可嵌入的 Flash 播放器代碼。
<?php
header('Content-type: text/html; charset=utf-8');
$template = '{youku id_XMTc5ODgwOTA4}
{youku id_XMzA5NTUwOTky}
{youku id_XMzEwMTQyMjA4}';
// 配置:正則 + 回調函數
$cfgYouku = [
['rege' => '/\s*\{youku\s+id_(.*)\}\s*/i', 'callback' => 'compile_youku']
];
foreach ($cfgYouku as $rule) {
if (isset($rule['callback'])) {
$template = preg_replace_callback($rule['rege'], $rule['callback'], $template);
}
}
echo $template;
/** 回調處理函數 */
function compile_youku($matches) {
$tag = $matches[0];
// 提取 video ID
if (!preg_match('/id_(\w+)/', $tag, $m)) return $tag; // 保留原樣
$vid = $m[1];
$api = "https://v.youku.com/player/getPlayList/VideoIDS/$vid/timezone/+08/version/5/source/out?password=&ran=2513&n=3";
$json = @file_get_contents($api);
if (!$json) return $tag;
$data = json_decode($json, true);
if (empty($data['data'][0])) return $tag;
$info = $data['data'][0];
$swf = "https://player.youku.com/player.php/sid/$vid/v.swf";
return "<h2>{$info['title']}</h2>"
. "<embed src=\"$swf\" quality=\"high\" width=\"480\" height=\"400\" "
. "align=\"middle\" allowNetworking=\"all\" allowScriptAccess=\"always\" "
. "type=\"application/x-shockwave-flash\"></embed>";
}