【发布时间】:2021-02-13 23:13:12
【问题描述】:
我的文件名如下:
1234_56_78 A_FAIRLY_SHORT_TITLE_D.pdf
幸运的是,文件命名非常一致,但我不能绝对保证有人没有在他们应该使用下划线的地方使用空格。
考虑到这一点,我想解析字符串并提取以下详细信息:
$project_no = '1234
$series_no = '56
$sheet_no = '78'
$revision = 'D'
$title = 'A Fairly Short Title'
目前,我使用以下方法获取此信息:
$filename = $_FILES['file']['name'][$i];
$filename = preg_replace('/\\.[^.\\s]{3,4}$/', '', $filename);
$parts = preg_split( "(_| )", $filename );
$project_no = $parts[0];
$series_no = $parts[1];
$sheet_no = $parts[2];
$revision = end($parts);
$title 只是删除$parts[0] $parts[1]、$parts[2] 和end($parts) 后剩下的所有内容,但我应该如何表达呢?
我认为我可以使用
$title = implode(' ',\array_diff_key($parts, [0,1,2,end($parts)]));
但这不会删除末尾的$revision 位...
$title = FLOOR AS PROPOSED D
我错过了什么,我是否不必要地过度复杂化?
【问题讨论】:
-
array_pop() 和 array_shift() 是你的朋友。
标签: php regex filenames text-parsing preg-split