1

私のウェブサイトにいくつかの mp3 ファイルを埋め込んでいます。問題は、一部の名前が異なり、すべてのファイルを正しい名前で定義しない限り、私の Web サイトが埋め込み方法を認識していないことです。

例えば、

http://example.com/chapter1/book-[some random name].001.mp3

このように埋め込むようにウェブサイトをセットアップしました

http://example.com/chapter1/book.001.mp3

phpで使用できる解決策はありますか[some random name]?

4

1 に答える 1

1

いくつかのオプションがありますが、

  1. ファイルへのパスを正しく出力する (最も簡単)

  2. mp3 のレジストリを構築して db ファイルまたはフラット ファイルに保存し、mod_rewrite を使用してパラメーターをローダー スクリプトに渡します。(下の例)

<?php 
/* mod_rewrite  .htaccess in chapters folder
RewriteEngine On
Options -Indexes
RewriteBase /chapter1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*).mp3$ index.php?loadmp3=$1 [L]
*/
$mp3_dir='./mp3s/';
//Example passed url: http://localhost/chapter1/book.002.mp3
if(isset($_GET['loadmp3'])){
    $real_path = get_mp3_list($_GET['loadmp3']);
    if($real_path != false){
        //Result:  ./mp3s/book-next_random_name.002.mp3
        print_r($real_path);
        //Pass the url to a streamer script
    }else{
        //not found
    }
}
/**
 * Build & cache, search for mp3 from array
 */
function get_mp3_list($search){
    global $mp3_dir;
    if(file_exists($mp3_dir.'mp3s.json')){
        $list = json_decode(file_get_contents($mp3_dir.'mp3s.json'),true);
    }else{
        $mp3s = glob($mp3_dir."*.mp3");
        $list = array();
        foreach($mp3s as $mp3){
            if(preg_match("#(\w+)-(\w+).(\d+).mp3#", $mp3, $match)){
                $list[]=array('location'=>$mp3,
                'type'=>$match[1],
                'name'=>$match[2],
                'episode'=>$match[3]);
            }
            if(!empty($list)){file_put_contents($mp3_dir.'mp3s.json', json_encode($list));}
        }
    }

    $search = explode('.',$search,2);
    foreach($list as $mp3){
        if($mp3['type'] == $search[0] && $mp3['episode'] == $search[1]){
            return $mp3['location'];
        }
    }
    return false;
}
/*
$list Example Array 
(
    [0] => Array
        (
            [location] => ./mp3s/book-next_random_name.002.mp3
            [type] => book
            [name] => next_random_name
            [episode] => 002
        )

    [1] => Array
        (
            [location] => ./mp3s/book-some_random_name.001.mp3
            [type] => book
            [name] => some_random_name
            [episode] => 001
        )

)
*/
?>

それが役に立てば幸い

于 2012-08-13T05:47:18.847 に答える