【问题标题】:how to exctract extension in php [closed]如何在php中提取扩展名[关闭]
【发布时间】:2012-10-27 16:41:58
【问题描述】:

我正在尝试使用 php 从字符串中提取扩展名,然后查看数组内部。似乎我确实得到了扩展,但是当我查看数组内部时它不起作用,我看不到问题。也许你可以建议或指出我。谢谢。

代码如下:

$file = '/folder/subfolder/file.mp4' //It can be also a url with domain etc. basically anything

$extension = pathinfo($file);
$final_extension = strtolower($extension['extension']);

$fileArray = array("mp4","mp3");

if (in_array($final_extension, $fileArray)) {
    echo "Found!";
}

【问题讨论】:

  • 为我工作ideone.com/wjEove(在第一行添加分号后)
  • 是的。第一行的分号会使您的脚本根本不起作用。还可以尝试在 $extension 数组上使用 print_r() 以确保您在其中有信息。
  • stackoverflow.com/search?q=file+extension+php 中挑选的重复项绰绰有余——请先搜索再询问。而且 Google 也不会告诉您解决方案。
  • @MihaiTodor 请分开创建您的答案,我会接受。谢谢
  • @Alex:我太懒了。只需接受赞成票即可。和我的一样。

标签: php arrays extract


【解决方案1】:

你缺少一个“;”

下面的更正行。它应该可以正常工作。经过测试。

$file = '/folder/subfolder/file.mp4';

【讨论】:

    【解决方案2】:

    您可以使用正则表达式。 这将是模式:“/.(\w+)$/”

    这将是实现:

    if (preg_match('/.(\w+)\/?$/', $file, $matches) { $extension = $matches[1]; }
    

    【讨论】:

    • 如果$file = 'http://test.com/'(注意尾随的“/”)怎么办?
    • 这只是为了获取扩展。分配扩展名后,他将添加 if (in_array()) 块。好的,我已经添加了斜杠部分。谢谢。
    • 这里真的没有必要使用正则表达式。并且 OP 发布的代码正在运行(在修复缺少的分号之后)
    • 现在更像了,尽管我不确定 OP 是否想从中获得“bla”部分:$file = 'http://test.com/test.bla' ;)
    • :D 我的错,我以为他支持来自其他来源的文件,字符串带有 'http://' 部分。考虑到这一点,他可以使用 'AND ! preg_match('/:\/\//', $file)'。但是 Jocelyn 是对的,这里的正则表达式是多余的。
    猜你喜欢
    • 2012-06-09
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    相关资源
    最近更新 更多