我还是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
答案 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));