Я ищу небольшую функцию, которая позволяет мне удалить расширение из имени файла.
Я нашел много примеров по поиску в Google, но они плохие, потому что они просто удаляют часть строки с помощью "." , Они используют точку для ограничителя и просто вырезать строку.
Посмотрите на эти сценарии,
$from = preg_replace('/\.[^.]+$/','',$from);
или
$from=substr($from, 0, (strlen ($from)) - (strlen (strrchr($filename,'.'))));
Когда мы добавляем строку следующим образом:
Это пример Somestring
Вернется только «Это» ...
Расширение может иметь 3 или 4 символа, поэтому мы должны проверить, находится ли точка на 4 или 5 позиции, а затем удалить его.
Как это можно сделать?
Ответы:
Попробуй это:
Таким образом, это соответствует точке, за которой следуют три или четыре символа, которые не являются точкой или пробелом. Правило «3 или 4», вероятно, следует ослабить, поскольку существует множество расширений файлов, которые короче или длиннее.
источник
20120720.something.somethingelse.jpg
"$var"
{2,4}
вместо{3,4}
http://php.net/manual/en/function.pathinfo.php
источник
Из руководства, pathinfo :
Это не должен быть полный путь для правильной работы. Это будет так же счастливо разбирать,
file.jpg
как/path/to/my/file.jpg
.источник
Использовать базовое имя PHP ()
(PHP 4, PHP 5)
var_dump(basename('test.php', '.php'));
Выходы: строка (4) «тест»
источник
Это довольно простое решение, и оно будет работать независимо от длины расширения, количества точек или других символов в строке.
В основном это выглядит только для последнего появления. а затем использует подстроку для извлечения всех символов до этой точки.
Это похоже на один из ваших гугл-примеров, но проще, быстрее и проще, чем регулярные выражения и другие примеры. Ну, в любом случае, имо. Надеюсь, это кому-нибудь поможет.
источник
.htaccess
Вы можете использовать то, что встроил PHP, чтобы помочь ...
Хотя, если вы имеете дело только с именем файла (
.somefile.jpg
), вы получите ...Смотрите это на CodePad.org
Или используйте регулярное выражение ...
Смотрите это на CodePad.org
Если у вас нет пути, а есть только имя файла, это будет работать и будет гораздо более кратким ...
Смотрите это на CodePad.org
Конечно, они оба просто смотрят на последний период (
.
).источник
.htaccess
Следующий код хорошо работает для меня, и он довольно короткий. Он просто разбивает файл на массив, разделенный точками, удаляет последний элемент (который гипотетически является расширением) и снова преобразовывает массив с точками.
источник
.htaccess
На самом деле это абсолютно правильно. Идите и используйте это.
Расширение файла - все после последней точки, и для расширения файла не требуется какого-либо определенного количества символов. Даже если говорить только о Windows, он уже поставляется с расширениями файлов, которые не вмещают 3-4 символа, например, например.
.manifest
,источник
.htaccess
и.htpasswd
в среде Apache.Рекомендую использовать:
pathinfo
сPATHINFO_FILENAME
источник
Есть несколько способов сделать это, но я думаю, что один из более быстрых способов заключается в следующем
Другое решение заключается в следующем. Я не проверял это, но похоже, что он должен работать в течение нескольких периодов в имени файла
Также:
Во всех них
$name
содержится имя файла без расширенияисточник
Вывод:
источник
$the_extension = substr($image_name, $last_dot_index, $last_dot_index);
Добавьте это, чтобы получить расширение файла.Как уже упоминалось, идея ограничения расширения определенным количеством символов недопустима. Продолжая идею array_pop, рассматривая строку с разделителями как массив, эта функция была полезна для меня ...
Использование:
Выходы:
В действии:
http://sandbox.onlinephpfunctions.com/code/5d12a96ea548f696bd097e2986b22de7628314a0
источник
Вы можете установить длину шаблона регулярного выражения с помощью
{x,y}
оператора.{3,4}
будет соответствовать, если предыдущий шаблон встречается 3 или 4 раза.Но я не думаю, что тебе это действительно нужно. Что вы будете делать с файлом с именем «This.is»?
источник
Использовать это:
источник
Попробуйте использовать это. это обязательно удалит расширение файла.
источник
РЕДАКТИРОВАТЬ : ИМХО самый умный подход, он удаляет последнюю точку и следующий текст из имени файла (иначе расширение):
Ура;)
источник
end()
не должно работать с функцией, переданной в качестве параметра. Он также выдает уведомление: только переменные должны передаваться по ссылкеЭто работает, когда есть несколько частей к расширению и является коротким и эффективным:
источник