如何使用php将mp3、mp4文件名与字符串分开?
大家好,任何人都可以帮助我想从PHP中的内爆数据中分离mp3、mp4 我的数据字符串如何使用php将mp3、mp4文件名与字符串分开?,php,string,Php,String,大家好,任何人都可以帮助我想从PHP中的内爆数据中分离mp3、mp4 我的数据字符串 $data = "song1.mp3, video1.mp4, song2.mp3" 我想分成两个单独的字符串:一个字符串只包含(,)分隔的mp4,另一个字符串包含mp3 我的数据库数据: $data = "song1.mp3, video.mp4, song2.mp3"; $mp4 = video1.mp4,video2.mp4,..etc; $mp3 = song1.mp3,song2.mp3,..etc
$data = "song1.mp3, video1.mp4, song2.mp3"
我想分成两个单独的字符串:一个字符串只包含(,
)分隔的mp4
,另一个字符串包含mp3
我的数据库数据:
$data = "song1.mp3, video.mp4, song2.mp3";
$mp4 = video1.mp4,video2.mp4,..etc;
$mp3 = song1.mp3,song2.mp3,..etc;
谢谢假设您的歌曲名称格式正确,这意味着它们被命名为
title.suffix
<?php
$data = "song1.mp3, video.mp4, song2.mp3";
$mp3 = [];
$mp4 = [];
$song_names = explode(',', $data);
foreach ($song_names as $song_name) {
$song_name = trim($song_name);
$parts = explode('.', $song_name);
if (count($parts) == 2) {
$suffix = $parts[1];
if ($suffix == 'mp3') {
$mp3[] = $song_name;
} else if ($suffix == 'mp4') {
$mp4[] = $song_name;
}
}
}
//using implode so that we won't have an extra comma hanging in the end
$mp4 = implode(', ', $mp4);
$mp3 = implode(', ', $mp3);
?>
使用explode()
通过,
分隔符将字符串转换为数组。然后循环遍历数组项,使用substr()
获取文件名的扩展名并进行检查
$data = "song1.mp3, video1.mp4, song2.mp3";
$mp4 = $mp3 = "";
foreach (explode(",", $data) as $file){
$file = trim($file);
substr($file, -3) == "mp4" ? $mp4.=$file."," : $mp3.=$file.",";
}
$mp4 = substr($mp4, 0, -1);
$mp3 = substr($mp3, 0, -1);
检查中的结果这听起来像是一个preg\u match\u all()的作业regex:
<?php
$string = 'song1.mp3, video.mp4, song2.mp3';
$regex = '#([^,\s]+\.mp3)#';
preg_match_all($regex, $string, $mp3s);
$regex = '#([^,\s]+\.mp4)#';
preg_match_all($regex, $string, $mp4s);
var_dump($mp3s[0]);
var_dump($mp4s[0]);
下面是正在运行的代码
以下是关于preg\u match\u all()
Ok的文档-使用pathinfo
$data = 'song1.mp3, video1.mp4, song2.mp3';
$mp3s = [];
$mp4s = [];
foreach (explode(', ', $data) as $file) {
$type = pathinfo($file)['extension'];
$type === 'mp3' ? $mp3s[] = $file : $mp4s[] = $file;
}
echo implode(', ', $mp4s) . PHP_EOL;
echo implode(', ', $mp3s) . PHP_EOL;
当然可以使用一些验证等等,但是作为一个MVP,它可以做到这一点。你应该发布你已经拥有的代码。也许你应该在内爆
你的数据之前做你想做的事情(检查扩展名,添加到特定数组)来改善你的体验,所以请阅读如何询问,和以及如何创建和\w+
不支持文件名中所有允许的字符,它在他的示例字符串中是这样做的。当然,如果他有任何其他情况下,它不起作用,这是很容易调整,但所有的例子都匹配。
$data = 'song1.mp3, video1.mp4, song2.mp3';
$mp3s = [];
$mp4s = [];
foreach (explode(', ', $data) as $file) {
$type = pathinfo($file)['extension'];
$type === 'mp3' ? $mp3s[] = $file : $mp4s[] = $file;
}
echo implode(', ', $mp4s) . PHP_EOL;
echo implode(', ', $mp3s) . PHP_EOL;