2013-12-11 50 views
2

我有一個包含文本和代碼的txt文件。txt文件只提取8位數字並轉換爲日期格式

<div data-role='day' data-day='20131225'><div data-role='event' data-name='<h1>kerst</h1>sdfg' data-start='Van 00:00u ' data-end='00:00u' data-location='thuis'></div></div> 
<div data-role='day' data-day='20131212'><div data-role='event' data-name='<h1>SDV</h1>GGG' data-start='Van begin ' data-end='einde' data-location='FGF'></div></div> 

是否可以提取所有8位數字爲這個txt文件20131225和20131212,以及格式轉換2013年12月25日它們....不僅這些日期...也未來的日期,如果事件被添加到txt文件將被添加...所以我不知道這將是哪個日期...並且以正確的日期格式顯示並且僅回顯這些日期。我正在考慮preg替換,但我沒有成功....可以soeone幫助我。 thx

+1

是的,這是可能的。 – 2013-12-11 23:07:29

+1

肯定紅領導。 – AbraCadaver

+0

解決thx每個人的幫助 – Johan

回答

1

假設這個文件實際上是具有這種格式的所有字符串,你可以用正則表達式去,這會更快既不XML/HTML解析

接下來的事情 - 我不爲格式推薦使用的strtotime,儘快很明顯,你可以走更快的變體:

<?php 

$s = "<div data-role='day' data-day='20131225'><div data-role='event' data-name='<h1>kerst</h1>sdfg' data-start='Van 00:00u ' data-end='00:00u' data-location='thuis'></div></div> 
<div data-role='day' data-day='20131212'><div data-role='event' data-name='<h1>SDV</h1>GGG' data-start='Van begin ' data-end='einde' data-location='FGF'></div></div>"; 

preg_match_all('/data-day=\'([^\']*)\'/', $s, $matches); 
foreach($matches[1] as $idx => $datevalue) 
{ 
    $year = substr($datevalue, 0, 4); 
    $month = substr($datevalue, 4, 2); 
    $day = substr($datevalue, 6, 2); 
    echo $year.'-'.$month.'-'.$day."\n"; 
} 
+0

thx很多你們! – Johan

2

當然,您擁有的數據可以稱爲text file that contains data and code :),但通常會有人稱之爲「HTML」文檔。

用PHP解析HTMLdom extension。使用這樣的:

$html = <<<EOF 
<div data-role='day' data-day='20131225'><div data-role='event' data-name='<h1>kerst</h1>sdfg' data-start='Van 00:00u ' data-end='00:00u' data-location='thuis'></div></div> 
<div data-role='day' data-day='20131212'><div data-role='event' data-name='<h1>SDV</h1>GGG' data-start='Van begin ' data-end='einde' data-location='FGF'></div></div> 
EOF; 

$doc = new DOMDocument(); 
$doc->loadHTML($html); 

// create an XPath selector to select the attributes containing the dates 
$selector = new DOMXpath($doc); 

// select all data-day attributes 
foreach($selector->query('//@data-day') as $date) { 
    // transform date format using date() and strotime() 
    echo date('Y/m/d', strtotime($date->nodeValue)); 
} 

對於我使用date()strtotime()日期轉換。你也應該閱讀他們的手冊。

+0

thx很多,幫助:)最後,我整天搜索這樣的東西:) – Johan

+0

不客氣。很高興聽到它可以幫助你:) – hek2mgl

相關問題