-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 回答