Getting file extension, how many ways?

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
redmonkey
Forum Regular
Posts: 836
Joined: Thu Dec 18, 2003 3:58 pm

Getting file extension, how many ways?

Post by redmonkey »

I was bored and decided to see how many ways I could come up with to get the file extension for a given filename using only a true single line of code but still have a good amount of error checking and no repition i.e. reversing an array twice. I stopped at five as I found something more productive to do :). These all are single lines of code, but probably wrapped due to length of lines.

Code: Select all

<?php

$filename = "i.am.bored.html";

$ext = is_string($filename) ? preg_match('/\.(\w+)$/', trim($filename), $ext) ? $ext[1] : false : false;

$ext = is_string($filename) ? strpos($filename, '.') !== false ? (!($ext = trim(end(explode('.', $filename))))) ? false : $ext : false : false;

$ext = is_string($filename) ? strpos($filename, '.') !== false ? (!($ext = trim(array_pop(explode('.', $filename))))) ? false : $ext : false : false;

$ext = is_string($filename) ? strpos($filename, '.') !== false ? (!($ext = trim(substr($filename, strrpos($filename, '.') + 1)))) ? false : $ext : false : false;

$ext = is_string($filename) ? strpos($filename, '.') !== false ? (!($ext = trim(array_shift(array_reverse(explode('.', $filename)))))) ? false : $ext : false : false;

?>
Anyone else who is bored have any more?
malcolmboston
DevNet Resident
Posts: 1826
Joined: Tue Nov 18, 2003 1:09 pm
Location: Middlesbrough, UK

Post by malcolmboston »

explode on .
Grim...
DevNet Resident
Posts: 1445
Joined: Tue May 18, 2004 5:32 am
Location: London, UK

Post by Grim... »

Code: Select all

<?php

$ext = "html";

?>
:D
redmonkey
Forum Regular
Posts: 836
Joined: Thu Dec 18, 2003 3:58 pm

Post by redmonkey »

Grim... wrote:

Code: Select all

<?php

$ext = "html";

?>
:D
malcolmboston wrote:explode on .
I think we are missing the point.
User avatar
JayBird
Admin
Posts: 4524
Joined: Wed Aug 13, 2003 7:02 am
Location: York, UK
Contact:

Post by JayBird »

what about

Code: Select all

$info = pathinfo($filename);
echo $info["extension"]
or

Code: Select all

$extension = substr (strrchr ($filename, "."), 1);
echo $extension;

Mark
redmonkey
Forum Regular
Posts: 836
Joined: Thu Dec 18, 2003 3:58 pm

Post by redmonkey »

Bech100 wrote:what about

Code: Select all

$info = pathinfo($filename);
echo $info&#1111;"extension"]
That's two lines essentially you are saying....

Code: Select all

$ext = pathinfo($filename);
$ext = $ext['extension'];
Bech100 wrote:or

Code: Select all

$extension = substr (strrchr ($filename, "."), 1);
echo $extension;
What if.....

Code: Select all

$filename = "somefile.txt               ";
:wink:
User avatar
JayBird
Admin
Posts: 4524
Joined: Wed Aug 13, 2003 7:02 am
Location: York, UK
Contact:

Post by JayBird »

redmonkey wrote: What if.....

Code: Select all

$filename = "somefile.txt               ";
:wink:
Well that would be just daft ;)
redmonkey
Forum Regular
Posts: 836
Joined: Thu Dec 18, 2003 3:58 pm

Post by redmonkey »

Bech100 wrote:Well that would be just daft ;)
Well yes, but you have to cater for user stupidity, don't you?
User avatar
scorphus
Forum Regular
Posts: 589
Joined: Fri May 09, 2003 11:53 pm
Location: Belo Horizonte, Brazil
Contact:

Post by scorphus »

Let me try:

Code: Select all

<?php
$filename = "i.am.bored.html";
$ext = ($ext = pathinfo($filename)) ? (!empty($ext['extension'])) ? trim($ext['extension']) : false : false;
?>
-- Scorphus
redmonkey
Forum Regular
Posts: 836
Joined: Thu Dec 18, 2003 3:58 pm

Post by redmonkey »

scorphus wrote:Let me try:

Code: Select all

<?php
$filename = "i.am.bored.html";
$ext = ($ext = pathinfo($filename)) ? (!empty($ext['extension'])) ? trim($ext['extension']) : false : false;
?>
-- Scorphus
Yep, that's one for the list.
User avatar
markl999
DevNet Resident
Posts: 1972
Joined: Thu Oct 16, 2003 5:49 pm
Location: Manchester (UK)

Post by markl999 »

Code: Select all

$ext = trim(end(explode('.', $filename)));
redmonkey
Forum Regular
Posts: 836
Joined: Thu Dec 18, 2003 3:58 pm

Post by redmonkey »

markl999 wrote:

Code: Select all

$ext = trim(end(explode('.', $filename)));
Already covered in my second example within my first post, only I included more error checking. e.g. what if $filename = "index"
Post Reply