Perhaps you may want to do this in a twisted & convoluted fashion (ie. within a function that uses Regex and a Looping Construct to fetch the data you need). Consider this Function below. It is worth noting that though it may appear twisted & convoluted, you are not limited to just getting the Date value. This means you also have access to all the key-value Pairs in that file: in case you need to at some point...
<?php
$file = __DIR__ . "/file.txt"; //<== THE NAME OF THE FILE CONTAINING YOUR DATA
/*************** BEGIN FUNCTIONS ***************/
function parseFile($file){
$arrFileContent = [];
// IF THE FILE DOES NOT EXIST RETURN NULL
if(!file_exists($file)){
return null;
}
// GET THE DATA FROM THE FILE & STORE IT IN A VARIABLE
$strFileDataContent = file_get_contents($file);
// IF THE FILE CONTAINS NOTHING RETURN NULL AS WELL
if(empty($strFileDataContent)){
return null;
}
// SPLIT THE CONTENTS OF THE FILE (STRING) AT THE END OF EACH LINE
// THUS CREATING AN ARRAY OF LINES OF TEXT-DATA
$arrFileDataLines = explode("\n", $strFileDataContent);
// LOOP THROUGH THE ARRAY PRODUCED ABOVE & PERFORM SOME PATTERN MATCHING
// AND TEXT EXTRACTION WITHIN THE LOOP
foreach($arrFileDataLines as $iKey=>$lineData){
$arrSubLines = explode("\n", $lineData);
foreach($arrSubLines as $intKey=>$strKeyInfo){
$rxClass = "#(^@class:)(\s*)(.*$)#i";
$rxSpan = "#(^span:)(\s*)?(.+$)#si";
preg_match($rxClass, $strKeyInfo, $matches);
preg_match($rxSpan, $strKeyInfo, $matches2);
if($matches) {
list(, $key, $null, $val) = $matches;
$keyA = str_replace("rtm_", "", $val);
if (!array_key_exists($keyA, $arrFileContent)) {
$arrFileContent[$keyA] = $val;
}
}
if($matches2) {
list(, $key2, $null, $val2) = $matches2;
$keyB = $keyA ."Data";
if (!array_key_exists($keyB, $arrFileContent)) {
$arrFileContent[$keyB] = parseSpanValues($val2, str_replace("rtm_", "", $keyA));
}
}
}
}
return $arrFileContent;
}
function parseSpanValues($spanData, $prefix){
$arrSpanData = explode(", ", preg_replace("#[\{\}\[\]\"\'\#\@]#", "", $spanData));
$objSpanData = new stdClass();
$cleanVal = "";
if($prefix == "tags"){
$cnt = 0;
foreach($arrSpanData as $i=>$val){
if(!stristr($val, ":")){
$cleanVal .= ", " . $val ;
$cnt++;
}
}
$arrSpanData[2] = $arrSpanData[2] . $cleanVal;
array_splice($arrSpanData, 3, $cnt);
}
foreach($arrSpanData as $iKey=>&$spanVal){
$arrSplit = preg_split("#\:\s#", $cleanVal . $spanVal);
$key = "text";
if($iKey == 0){
$key = "{$prefix}Text";
}else if($iKey == 1){
$key = "{$prefix}TextClass";
}else if($iKey == 2){
$key = "{$prefix}Value";
}else if($iKey == 3){
$key = "{$prefix}ValueClass";
}
if(isset($arrSplit[1])){
$objSpanData->$key = $arrSplit[1];
}
}
return $objSpanData;
}
/*************** END OF FUNCTIONS ***************/
var_dump(parseFile($file));
// PRODUCES SOMETHING LIKE:
array (size=10)
'due' => string 'rtm_due' (length=7)
'dueData' =>
object(stdClass)[1]
public 'dueText' => string 'Due' (length=3)
public 'dueTextClass' => string 'rtm_due_title' (length=13)
public 'dueValue' => string 'Sat 16 Jul 16' (length=13)
public 'dueValueClass' => string 'rtm_due_value' (length=13)
'priority' => string 'rtm_priority' (length=12)
'priorityData' =>
object(stdClass)[2]
public 'priorityText' => string 'Priority' (length=8)
public 'priorityTextClass' => string 'rtm_priority_title' (length=18)
public 'priorityValue' => string '1' (length=1)
public 'priorityValueClass' => string 'rtm_priority_value' (length=18)
'tags' => string 'rtm_tags' (length=8)
'tagsData' =>
object(stdClass)[3]
public 'tagsText' => string 'Tags' (length=4)
public 'tagsTextClass' => string 'rtm_tags_title' (length=14)
public 'tagsValue' => string 'gcal-work, github, stack-overflow' (length=33)
public 'text' => string 'rtm_tags_value' (length=14)
'location' => string 'rtm_location' (length=12)
'locationData' =>
object(stdClass)[4]
public 'locationText' => string 'Location' (length=8)
public 'locationTextClass' => string 'rtm_location_title' (length=18)
public 'locationValue' => string 'none' (length=4)
public 'locationValueClass' => string 'rtm_location_value' (length=18)
'list' => string 'rtm_list' (length=8)
'listData' =>
object(stdClass)[5]
public 'listText' => string 'List' (length=4)
public 'listTextClass' => string 'rtm_list_title' (length=14)
public 'listValue' => string 'Work' (length=4)
public 'listValueClass' => string 'rtm_list_value' (length=14)
So as it is right now, if you wanted to get the date for the first instance in the Array [Element dueData], you can simply do something like this:
<? php
$data = parseFile($file);
$dateDateValue = $data['dueData']->dueValue;
var_dump($dateDateValue); // PRODUCES:: 'Sat 16 Jul 16'
Hope this attempts (at all) to give you a vague idea on how to improvise on your own.
Cheers & Good Luck!!!