2016-05-23 4 views
-1

Bitte sagen Sie, wie Regex-Code zu allen Vorkommen von Datum aus der Zeichenfolge finden, in dem unten aufgeführten Format:Preg übereinstimmen, um alle Vorkommen von Datum in diesem Format 26 Januar 2016 oder 26. Januar 2016 oder 26. Januar 2016 zu finden

26 jan 2016 
26th jan 2016 
26 january 2016 
26th january 2016 
26 feb 15 
26th feb 15 

dh:

$string = "Test 26 jan 2016 test test test 12 Feb 15 test test test 17 January 2013 nice testing 123 6 12 2016"; 

möchte ich das Ergebnis als Array, wo ich bekommen:

$res = array (

'2016-01-26', 
'2015-02-12', 
'2013-01-27' 

) 

Ple ase, wie man dasselbe mit PHP regex macht.

+0

* Bitte sagen Sie, wie man Regex-Code * => Nein. Willkommen bei SO, hier, bevor Sie eine Frage stellen, müssen Sie ** versuchen **, scheitern, dann ** versuchen Sie es härter **, scheitern wieder, dann stellen Sie eine Frage und erzähl uns ** was du versucht hast **. –

Antwort

0

Die Lösung mit preg_match_all, array_map, date und strtotime Funktionen (Ich habe die anfängliche Zeichenfolge ein wenig modifiziert, um einen komplexen Fall zu erhalten):

$string = "Test 26th jan 2016 test test test 12 Feb 15 test test test 17 January 2013 nice testing 123 6 12 2016"; 

preg_match_all("/\b\d{2}(?:\w{2})? \w+? \d{2,4}\b/i", $string, $matches); 
$dates = array_map(function($d) { 
    return date('Y-m-d', strtotime($d)); 
}, $matches[0]); 

print_r($dates); 

Der Ausgang: Array

(
    [0] => 2016-01-26 
    [1] => 2015-02-12 
    [2] => 2013-01-17 
) 
+0

danke @RomanPerekhrest –

+0

@AbhranilMajumder, Gern geschehen – RomanPerekhrest

Verwandte Themen