How do I get a file extension in PHP?

前端 未结 28 2248
一向
一向 2020-11-21 22:45

This is a question you can read everywhere on the web with various answers:

$ext = end(explode(\'.\', $filename));
$ext = substr(strrchr($filename, \'.\'), 1         


        
28条回答
  •  迷失自我
    2020-11-21 23:03

    People from other scripting languages always think theirs is better because they have a built-in function to do that and not PHP (I am looking at Pythonistas right now :-)).

    In fact, it does exist, but few people know it. Meet pathinfo():

    $ext = pathinfo($filename, PATHINFO_EXTENSION);
    

    This is fast and built-in. pathinfo() can give you other information, such as canonical path, depending on the constant you pass to it.

    Remember that if you want to be able to deal with non ASCII characters, you need to set the locale first. E.G:

    setlocale(LC_ALL,'en_US.UTF-8');
    

    Also, note this doesn't take into consideration the file content or mime-type, you only get the extension. But it's what you asked for.

    Lastly, note that this works only for a file path, not a URL resources path, which is covered using PARSE_URL.

    Enjoy

提交回复
热议问题