How to remove extension from string (only real extension!)

Solution 1:

http://php.net/manual/en/function.pathinfo.php

pathinfo — Returns information about a file path

$filename = pathinfo('filename.md.txt', PATHINFO_FILENAME); // returns 'filename.md'

Solution 2:

Try this one:

$withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $filename);

So, this matches a dot followed by three or four characters which are not a dot or a space. The "3 or 4" rule should probably be relaxed, since there are plenty of file extensions which are shorter or longer.