PHP: Как удалить ненужные точки в имени файла при загрузке файла? - PullRequest
1 голос
/ 03 ноября 2010

У меня есть скрипт для загрузки файлов с помощью PHP. Я уже убираю некрасивых персонажей.

Я также хотел бы удалить точки в имени файла, за исключением последнего, которое указывает расширение файла.

У кого-нибудь есть идеи, как я мог это сделать .?

Например, как бы вы получили

$filename = "water.fall_blue.sky.jpg";
$filename2 = "water.fall_blue.sky.jpeg";

чтобы вернуть это в обоих случаях ..?

water.fall_blue.sky

Ответы [ 3 ]

10 голосов
/ 03 ноября 2010

Используйте pathinfo() для извлечения имени файла (элемент массива «filename» доступен начиная с PHP 5.2); str_replace() все точки из него; и повторно склейте расширение файла.

3 голосов
/ 03 ноября 2010

Вот пример того, как это можно сделать:

<?php
$string = "really.long.file.name.txt";
$lastDot = strrpos($string, ".");
$string = str_replace(".", "", substr($string, 0, $lastDot)) . substr($string, $lastDot);
?>

Он преобразует имена файлов следующим образом:

действительности. Лонг.file.name.txt -> действительно, longfilename.txt * 1006.*

Проверьте здесь: пример

[Редактировать] Обновлен скрипт, позиция точки кешируется сейчас

0 голосов
/ 01 сентября 2016

FILENAME = this / is (your, file.name.JPG

$basename=basename($_FILES['Filedata']['name']);

$filename=pathinfo($basename,PATHINFO_FILENAME);
$ext=pathinfo($basename,PATHINFO_EXTENSION);

//replace all these characters with an hyphen
$repar=array(".",","," ",";","'","\\","\"","/","(",")","?");

$repairedfilename=str_replace($repar,"-",$filename);
$cleanfilename=$repairedfilename.".".strtolower($ext);

RESULT = this-is-your-file-name.jpg

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...