-3

可能重复:
php正则表达式我如何获取字符串的最后一部分

我想从文件名中删除特定字符串之后的字符串,但带有扩展名。在上面的文件名 C14-IMAGE-BACK-PREVIEW-TEST-1349965063.doc 中,我想删除部分 -1349965063。删除文件后名称应为 C14-IMAGE-BACK-PREVIEW-TEST.doc

4

3 回答 3

0

你可以使用substr: http: //php.net/manual/en/function.substr.php

这仅在字符串的第一部分具有一致长度时才有效:

$string = 'C14-IMAGE-BACK-PREVIEW-TEST-1349965063.doc';
$start = 0;
$length = 27;
$first_part = substr($string, $start, $length);

然后只需在最后添加您的扩展程序即可。


长度不一致的替代建议:

$string = 'C14-IMAGE-BACK-PREVIEW-TEST-1349965063.doc';
$ext = pathinfo($string);
$parts = explode('TEST', $string);
$filename = $parts[0] . 'TEST' . $ext['extension'];

如果名称不断变化但连字符结构保持不变,您可能会在连字符上爆炸。然后忽略最后一个数组条目,因为那是时间戳:

$string = 'C14-IMAGE-BACK-PREVIEW-TEST-1349965063.doc';
$ext = pathinfo($string);
$parts = explode('-', $string);
$file = '';
for ($i = 0; $i < count($parts) - 1; $i++)
{
    $file .= $parts[$i]; 
}
$file .= $ext['extension'];
于 2012-10-11T15:02:05.927 回答
0
$str = 'C14-IMAGE-BACK-PREVIEW-TEST-1349965063.doc';
$str = preg_replace('/^(.*)-(\d+)(\.doc)$/',"$1$3",$str);
于 2012-10-11T15:02:07.890 回答
0

这就是我所做的:

<?php
$name = "C14-IMAGE-BACK-PREVIEW-TEST-1349965063.doc";
$new_name = $name;
$search = "TEST";
$position =  strpos($name, $search);
$ext = pathinfo($name);
if($position !== false && !empty($ext['extension']))
{
    $new_name = substr($name, 0, $position + strlen($search)) . '.' . $ext['extension'];
}
var_dump($new_name);
于 2012-10-11T15:08:59.540 回答