我正在尝试使用php的字符串函数找出从文件名中删除时间戳的最佳方法。时间戳从文件名的其余部分通过左侧的下划线和点开始右侧的文件扩展名(例如myfile_12343434.jpg) - 我只想要下划线之前的文本,尽管这个长度是可以变化。处理这个问题的最佳方法是什么?谢谢!
答案 0 :(得分:3)
修改以保持扩展名完整(包括.gd2
和.JPEG
)):
$new = preg_replace("/_\\d+(\\.[a-z0-9]+)\$/i","\\1",$orig);
这有效地删除了“_123”部分,并且不那么漂亮。对于我们中的纯粹主义者来说,这是一个带有先行断言的版本,它只删除了时间戳:
$new = preg_replace("/_\\d+(?=\\.[0-9a-z]+\$)/i","",$orig);
答案 1 :(得分:0)
你可以用这个:
$filename = explode("_", $orig_filename)[0];
答案 2 :(得分:0)
最好的方法是使用preg_replace()
指定完全匹配。一个好的开始就像下面这样(它也将保留扩展名):
$new = preg_replace("/_\d+/","",$orig);
但由于这是一个unix时间戳,我们可以通过指定它将匹配的数字部分的长度来做得更好:
$new = preg_replace("/_\d{1,11}/","",$orig);