将默认的mp3扩展名添加到已经没有mp3扩展名的文件名



我有一个网站,用户上传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的论点

  1. 只要
  2. 抓取任何文本(.+)
  3. 在行结束之前的文本(eol = $)是不是 .mp3(?<!.mp3)

此时有两种可能性。取决于用户在文件名的末尾的.mp3扩展名,我们找到了与上面两个标准匹配的东西,或者我们没有:

  • 如果您确实具有xyz.mp3的形式,则它只是返回的,这是所需的行为。这是因为它失败了#2,没有被抓住。

  • 否则,preg_replace的第二个论点说我们抓取了我们抓取的文字($1),并附加.mp3

街上的单词是真的。您确实应该验证文件数据实际上是mp3。

您可能想查看pathinfo()函数,它可以为您提供文件名的各种片段。

最新更新