YeppThat'sMe
YeppThat'sMe

Reputation: 1862

PHP RegEx extract filename

I need your help with a RegEx in PHP

I have something like: vacation.jpg and I am looking for a RegEx which extracts me only the 'vacation' of the filename. Can someone help me?

Upvotes: 1

Views: 4086

Answers (5)

IsisCode
IsisCode

Reputation: 2490

Better answers have already been provided, but here's another alternative!

$fileName = "myfile.jpg";
$name = str_replace(substr($fileName, strpos($fileName,".")), "", $fileName);

Upvotes: 1

Matej Baćo
Matej Baćo

Reputation: 1332

And if you really need regex, this one will do it:

$success = preg_match('~([\w\d-_]+)\.[\w\d]{1,4}~i', $original_string, $matches);

Inside matches you will have first part of file name.

Upvotes: 2

DaveRandom
DaveRandom

Reputation: 88647

You don't need regex for this.

Approach 1:

$str = 'vacation.jpg';
$parts = explode('.', basename($str));
if (count($parts) > 1) array_pop($parts);
$filename = implode('.', $parts);

Approach 2 (better, use pathinfo()):

$str = 'vacation.jpg';
$filename = pathinfo($str, PATHINFO_FILENAME);

Upvotes: 0

Tango Bravo
Tango Bravo

Reputation: 3309

You can use pathinfo instead of Regex.

$file = 'vacation.jpg';
$path_parts = pathinfo($file);
$filename = $path_parts['filename'];

echo $filename;

Upvotes: 4

Adam Wright
Adam Wright

Reputation: 49376

Don't use a regex for this - use basename:

$fileName = basename($fullname, ".jpg");

Upvotes: 6

Related Questions