2014-04-06 112 views
1

我在尋找確定挖掘文件名的一部分的最佳方法。我將放在一起的應用程序需要能夠分解文件名,然後根據該文件名的一部分查詢數據庫。讓我給你的文件名可以怎麼進來的一些例子。分解文件名查找匹配

Station-[_A]_Warren_2014-01-2614_40_01_377000.mp3 
Fire_station_2014-02-1311_10_01_347000.mp3 
FIRE_EMS_2014-03-0111_11_01_212000.mp3 
Really_long_name_goes_here_2014-04-0123_12_01_177000.mp3 

眼下,掃描目錄中查找長文件名後,我的變量是$文件。我需要找出一種可能爆炸的方法(我可以做爆炸),但我需要一種很好的方法來幫助確定文件名的「前面」。該文件名的前面被定義爲「任何在YYYY-MM-DDHH」之前的格式。

所以我猜測,必須對此進行某種正則表達式或pre_match?

+0

什麼是377000,347000,212000,177000是什麼意思? –

+0

_2014之後的所有內容都是日期/時間格式,一直到毫秒。所以_2014-04-05-23_13_01_120000.mp3是2014年4月5日,11:13:01:120000 – MrTechie

+0

我想你想將它轉換爲時間戳以將其放入數據庫中? –

回答

4

您可以使用preg_match

preg_match('/(.*)(_\d{4}-\d+-\d+)_(.*)/', $file, $matches); 

echo $matches[1]; 
+0

謝謝安迪 - 看起來它會做的伎倆!我將不得不測試一些,但應該很好! – MrTechie

+0

很棒的回答。儘管聲明'$ matches'不是必需的。 –

+0

哇!雙倍感謝安迪!我從來沒有做過任何preg_match,我曾經使用除了$ matches [1]以外的任何東西。這一次,我開始使用$ matches [2]和$ matches [3]:D – MrTechie