Reputation: 1862
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
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
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
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
Reputation: 3309
You can use pathinfo instead of Regex.
$file = 'vacation.jpg';
$path_parts = pathinfo($file);
$filename = $path_parts['filename'];
echo $filename;
Upvotes: 4
Reputation: 49376
Don't use a regex for this - use basename
:
$fileName = basename($fullname, ".jpg");
Upvotes: 6