我有一個腳本來上傳PHP文件。 我已經做了一些清理工作,以消除醜陋的字符。PHP:如何在文件上傳文件中刪除不必要的點?
我還想刪除文件名中的點,除了最後一個,表示文件擴展名。
任何人都有一個想法,我可以做到這一點。
例如,你怎麼會得到
$filename = "water.fall_blue.sky.jpg";
$filename2 = "water.fall_blue.sky.jpeg";
在這兩種情況下返回這個..?
water.fall_blue.sky
我有一個腳本來上傳PHP文件。 我已經做了一些清理工作,以消除醜陋的字符。PHP:如何在文件上傳文件中刪除不必要的點?
我還想刪除文件名中的點,除了最後一個,表示文件擴展名。
任何人都有一個想法,我可以做到這一點。
例如,你怎麼會得到
$filename = "water.fall_blue.sky.jpg";
$filename2 = "water.fall_blue.sky.jpeg";
在這兩種情況下返回這個..?
water.fall_blue.sky
使用pathinfo()
提取文件名(「文件名」的數組元素是可用自PHP 5.2); str_replace()
所有的點出來;並重新粘貼文件擴展名。
太棒了!今天學到了新東西。謝謝。 – pnichols 2010-11-03 16:36:24
這裏有一個如何可以做到這一點的例子:
<?php
$string = "really.long.file.name.txt";
$lastDot = strrpos($string, ".");
$string = str_replace(".", "", substr($string, 0, $lastDot)) . substr($string, $lastDot);
?>
它可以轉換的文件名,像這樣:
really.long.file.name.txt - > reallylongfilename.txt
檢查這裏:example
[編輯]更新的腳本,點位置緩存現在
用'_'代替'.'會不會更好? – RobertPitt 2010-11-03 15:53:49
你應該緩存'strrpos($ string,「。」)'不要運行兩次。 – 2010-11-03 15:54:39
FILENAME =這/是(你的,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 =這 - 是 - 你的文件,name.jpg
如果我要上傳archive.tar.gz什麼? – Gordon 2010-11-03 16:31:34
[如何在PHP中提取文件擴展名?](http://stackoverflow.com/questions/173868/how-to-extract-a-file-extension-in-php)和[最快的方法來取代在PHP中的字符串](http://stackoverflow.com/questions/3869829/fastest-way-to-replace-string-in-php) – Gordon 2010-11-03 16:47:22