-1

重複の可能性:
PHP でファイル拡張子を抽出する方法は?

次の順序で、プラグイン名とプラグインが使用する言語ファイルを使用して連想配列を作成する必要があります。

/whatever/path/length/public_html/wp-content/plugins/adminimize/languages/adminimize-en_US.mo
/whatever/path/length/public_html/wp-content/plugins/audio-tube/lang/atp-en_US.mo
/whatever/path/length/public_html/wp-content/languages/en_US.mo
/whatever/path/length/public_html/wp-content/themes/twentyeleven/languages/en_US.mo 

これらは、WordPress がロードしている言語ファイルです。
それらはすべて 内/wp-content/にありますが、サーバー パスは可変です。
プラグイン フォルダー内のものだけを探しているので、プラグイン フォルダー名とファイル名を取得します。

関数が欠けている部分であるPHPの仮説的なケースreg_extract_*

$plugins = array();

foreach( $big_array as $item ) 
{
    $folder = reg_extract_folder( $item );
    if( 'plugin' == $folder ) 
    {
        // "folder-name-after-plugins-folder"
        $plugin_name = reg_extract_pname( $item ); 

        // "ending-mo-file.mo"
        $file_name = reg_extract_fname( $item ); 

        $plugins[] = array( 'name' => $plugin_name, 'file' => $file_name );
    }
}

[アップデート]

わかりましたので、かなり基本的な機能が欠けていましたpathinfo... :/

/plugins/が配列に含まれているかどうかを検出するのに問題はありません。

しかし、プラグインのフォルダ名はどうでしょうか?

4

2 に答える 2

2

この例では、フォルダー内のすべてのファイルを取得し、ファイル パスに関するすべての情報を表示します。

<?php

foreach(glob("/path/tofiles/*.*") as $file){
    $info = pathinfo($file);
    echo $info['dirname'], "\n";
    echo $info['basename'], "\n";
    echo $info['extension'], "\n";
    echo $info['filename'], "\n"; // since PHP 5.2.0
}
于 2012-12-05T22:46:38.053 に答える
1
$path = '/whatever/path/length/public_html/wp-content/plugins/adminimize/languages/adminimize-en_US.mo';
preg_match('/plugins\/([^\/]+?)\/(?:[^\/]+\/)?(.+)/', $path, $matches);
$dir = $matches[1];
$filename = $matches[2];

これにより、adminize が $dir に、adminimize-en_US.mo が $filename に保存されます。

于 2012-12-05T22:56:09.013 に答える