我有一个网站,用户上传mp3文件并获取链接。所有文件都从表单上传到数据库表。但是问题在于,某些文件上传的某些文件不包含.mp3扩展名,我认为这是因为用户拥有的设备将其保存为"仅名称"。
这是文件的示例URL:
www.example.com/images/my_audio
您可能会看到 .mp3 缺少扩展名。
,我希望此链接出现这样(带有默认的.mp3扩展)
www.example.com/images/my_audio.mp3
如果没有扩展,则如何在上传过程中验证图像名称并添加扩展名?
我尝试了str_replace()
str_replace(" ",",".mp3",$file);
,但似乎不起作用。
有什么想法?
您可以使用以下方式:
if(preg_match('/mp3/',$file))
{
echo 'It has extension';
}
else
{
$file .= '.mp3';
}
如果您想要一个单线,可以始终使用
preg_replace("/(.+)(?<!.mp3)$/i", "$1.mp3", $file_name);
第一个与 preg_replace
的论点
- 只要 抓取任何文本
- 在行结束之前的文本(eol =
$
)是不是.mp3
:(?<!.mp3)
(.+)
此时有两种可能性。取决于用户在文件名的末尾的.mp3扩展名,我们找到了与上面两个标准匹配的东西,或者我们没有:
如果您确实具有xyz.mp3的形式,则它只是返回的,这是所需的行为。这是因为它失败了#2,没有被抓住。
否则,
preg_replace
的第二个论点说我们抓取了我们抓取的文字($1
),并附加.mp3
。
街上的单词是真的。您确实应该验证文件数据实际上是mp3。
您可能想查看pathinfo()函数,它可以为您提供文件名的各种片段。