用PHP重命名字母数字图像
我在一个文件夹中有近10000张图片,图片名称如下 朝鲜冷杉(Abies_koreana_Blauer_Pfiff_05-06-10_1.jpg)用PHP重命名字母数字图像,php,Php,我在一个文件夹中有近10000张图片,图片名称如下 朝鲜冷杉(Abies_koreana_Blauer_Pfiff_05-06-10_1.jpg) 朝鲜冷杉(Abies_koreana_Prostate_Beauty_05-05-10_2.jpg) 日本扁柏06-10-10\u 3.jpg 山毛榉(Fagus_sylvatica_Dawyck_Gold_05-02-10_1.jpg) 我想做的是使用PHP重命名图像,这样图像名称中只保留字符,我想删除数字部分,例如上面的图像 Abies_kore
朝鲜冷杉(Abies_koreana_Prostate_Beauty_05-05-10_2.jpg)
日本扁柏06-10-10\u 3.jpg
山毛榉(Fagus_sylvatica_Dawyck_Gold_05-02-10_1.jpg)
我想做的是使用PHP重命名图像,这样图像名称中只保留字符,我想删除数字部分,例如上面的图像 Abies_koreana_Blauer_Pfiff.jpg
朝鲜冷杉(Abies_koreana_Prostrate_Beauty).jpg
日本扁柏 Fagus_sylvatica_Dawyck_Gold.jpg
这可能吗?或者我必须手动执行?您可以使用PHP(或bash)执行此操作。 您的朋友将浏览目录,修改文件名,以反映磁盘上更改的文件名 您要做的事情可以在大约10行代码中完成。使用上述成分,您应该能够编写一个小脚本来自己更改文件名 更新 扔掉数字部分(根据给出的例子)可以用一个相当简单的正则表达式来完成。请注意,这将删除[a-z]文件名和后缀(“.jpq”)之间的任何数字(-)。所以你不会得到“foo3.png”而是“foo.png”。如果这是一个问题,可以调整正则表达式以满足该标准
<?php
$files = array(
'Abies_koreana_Blauer_Pfiff_05-06-10_1.jpg',
'Abies_koreana_Prostrate_Beauty_05-05-10_2.jpg',
'Chamaecyparis_obtusa_Limerick 06-10-10_3.jpg',
'Fagus_sylvatica_Dawyck_Gold_05-02-10_1.jpg',
);
foreach ($files as $source) {
// strip all numeric (date, counts, whatever)
// characters before the file's suffix
// (?= …) is a non-capturing look-ahead assertion
// see http://php.net/manual/en/regexp.reference.assertions.php for more info
$destination = preg_replace('#[ _0-9-]+(?=\.[a-z]+$)#i', '', $source);
echo "'$source' to '$destination'\n";
}
为每个文件名执行此操作
$new_filename = preg_replace("/(\w\d{0,2}[\W]{1}.+\.)/",".",$current_file_name);
最后一个函数可能是这样的
function renameFiles($directory)
{
$handler = opendir($directory);
while ($file = readdir($handler)) {
if ($file != "." && $file != "..") {
if(preg_match("/(\w\d{0,2}[\W]{1}.+\.)/",$file)) {
echo $file."<br/>";
}
rename($directory."/".$file,$directory."/".preg_replace("/(\w\d{0,2}[\W]{1}.+\.)/",".",$file));
}
}
closedir($handler);
}
renameFiles("c:/wserver");
函数重命名文件($directory)
{
$handler=opendir($directory);
而($file=readdir($handler)){
如果($file!=“&&&$file!=”){
if(preg_match(“/(\w\d{0,2}[\w]{1}.+\)/”,$file)){
echo$文件。“
”;
}
重命名($directory./“$file,$directory./”.preg_replace(“/(\w\d{0,2}[\w]{1}.+\)/”,“,$file));
}
}
closedir($handler);
}
重命名文件(“c:/wserver”);
更新看看你不想去掉数字部分,在你的样本中,你把-和作为数字。你想去掉第一个数字后面的所有字符吗?我想去掉数字部分以及数字前后的-&u所以,如果总是要删除11个字符,那么substr($filename,0,-11)应该是正确的。我想你的意思是我会找到”先从右到左删除12个字符,然后从右到左删除12个字符?我可以编写这段代码,这没什么大不了的,问题是如何区分字母数字添加的正则表达式来重命名您的文件…它说“警告:preg_replace()[function.preg replace]:在代码所在的第16行test1.php中未找到结尾分隔符“/”$new\u filename=preg\u replace(“/(\w\d{0,2}[\w]{1}.+\”,“,$file));哦,抱歉!错过/结尾处。直接在编辑器中键入有时不是个好主意:)好的,让我为您测试此函数。如果需要,将返回编辑。再次编辑尝试按原样使用该函数,并在函数调用中替换文件夹/目录的路径