首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 模板標簽解析實例:正則回調替換優酷視頻標簽

     編輯:PHP 相關知識

需求

模板內容含自定義標簽 {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>";
}

擴展思路

  • 將多平台(優酷、騰訊、B站)標簽統一配置在陣列,統一入口解析。
  • 緩存 API 請求結果,避免重複遠程調用。
  • 支持響應式播放器(iframe/HTML5),逐步替換 Flash。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved