如何在PHP中从文件名提取指定词汇?特定文件名关键词提取可行性咨询
在PHP中从文件名提取指定词汇的方法
没问题,我来帮你搞定这个需求!针对你给出的几个文件名,咱们可以用两种简单的方法提取目标词汇,同时也会给你通用的思路。
方法一:字符串分割(适合格式固定的场景)
你的文件名格式非常统一:MyCSV - [目标词].csv,咱们可以先去掉文件扩展名,再用分隔符-拆分字符串:
// 批量处理你的文件名示例 $filenames = ["MyCSV - Test.csv", "MyCSV - Prototype.csv", "MyCSV - Super.csv"]; foreach ($filenames as $file) { // 获取不带扩展名的文件名(比如把"MyCSV - Test.csv"变成"MyCSV - Test") $nameWithoutExt = pathinfo($file, PATHINFO_FILENAME); // 用" - "拆分字符串,得到数组["MyCSV", "Test"] $parts = explode(" - ", $nameWithoutExt); // 取数组的第二个元素就是咱们要的词 $target = $parts[1]; echo $target . PHP_EOL; // 依次输出 Test、Prototype、Super }
这种方法简单高效,只要文件名格式不变,就能稳定提取。
方法二:正则表达式(适合格式灵活的场景)
如果以后文件名格式有小变化(比如分隔符前后空格不固定、前缀不同),用正则表达式会更灵活。针对你的例子,可以写这样的正则:
$filenames = ["MyCSV - Test.csv", "MyCSV - Prototype.csv", "MyCSV - Super.csv"]; foreach ($filenames as $file) { // 匹配" - "后面到".csv"前面的内容 preg_match('/.* - (.*)\.csv/', $file, $matches); // $matches[1]就是捕获到的目标词汇 $target = $matches[1]; echo $target . PHP_EOL; }
如果要适配更通用的文件名(比如不同扩展名),可以把正则改成/.* - (.*)\..*/,这样不管是.csv还是其他后缀都能处理。
总结
- 格式固定时优先用字符串分割,代码更易读,性能更好;
- 格式多变时用正则表达式,适配性更强。
内容的提问来源于stack exchange,提问作者Lanz Joshua
相关产品推荐
相关产品推荐

