截断数组中字符串的函数是什么?

时间:2010-08-18 20:59:59

标签: php arrays

我还是PHP的新手,我在手册中找不到这个,因为我不确定该函数的名称。我有一个包含这些值的数组:

$files[] = 

[0] => 01_Nhemamusasa.mp3 
[1] => 02_Kari_Mudande.mp3 
[2] => 03_Chikende.mp3 
[3] => 04_Karinge_Zuva.mp3 
[4] => 05_Mbirimo.mp3 
[5] => 06_Muchenjedza_Mutonga.mp3 
[6] => 07_Skokianna.mp3 
[7] => 08_Mbavarira.mp3

我需要做的是截断内容以摆脱_之前的部分并删除文件类型。我还希望将在数组[1]和[5](在本例中)中间找到的下划线转换为空格。换句话说,我需要将这些文件名转换为歌曲实际名称的数组。

感谢您的帮助!

编辑:我的主机正在使用PHP 5.2.12

5 个答案:

答案 0 :(得分:3)

使用array_map(),preg_replace()和str_replace()的组合:

$array = array(...);

$array = array_map(function($item) {
    return str_replace('_', ' ', preg_replace('#^\d+_(.*?)\.[a-z0-9]{2,6}$#i', '$1', $item));
}, $array);

print_r($array);

答案 1 :(得分:2)

您将需要使用array_walk函数:http://us3.php.net/array_walk 如果您使用的是PHP 5.3,则可以将array_walk传递给匿名函数。

编辑:array_map也可以做到这一点。关于匿名函数的相同建议也适用于此。

答案 2 :(得分:1)

$input = array(
    '01_Nhemamusasa.mp3',
    '02_Kari_Mudande.mp3',
    '03_Chikende.mp3',
    '04_Karinge_Zuva.mp3',
    '05_Mbirimo.mp3',
    '06_Muchenjedza_Mutonga.mp3',
    '07_Skokianna.mp3',
    '08_Mbavarira.mp3'
);

function convert($item) {
    $item = explode('_', $item);
    unset($item[0]);
    $item = implode('_', $item);
    $item = explode('.', $item);
    $item = str_replace('_', ' ', $item[0]);
    return $item;
}

$output = array_map('convert', $input);

print_r($output);

输出:

Array
(
    [0] => Nhemamusasa
    [1] => Kari Mudande
    [2] => Chikende
    [3] => Karinge Zuva
    [4] => Mbirimo
    [5] => Muchenjedza Mutonga
    [6] => Skokianna
    [7] => Mbavarira
)

答案 3 :(得分:0)

您可以使用foreach迭代数组并使用substr删除前三个字符,再次删除最后四个或每个字符串。

之后,您可以使用str_replace用空格更改下划线。

答案 4 :(得分:0)

两个php字符串替换函数(str / preg_replace)都接受数组作为“subject”参数:

$files = preg_replace('~^\d+ (.+?)\..+$~', '$1', 
    str_replace('_', ' ', $files));