Utilice la función strtotime
php.
Por supuesto, necesitaría configurar algunas reglas para analizarlas, ya que debe deshacerse de todo el contenido adicional de la cadena, pero aparte de eso, es una función muy flexible que probablemente lo ayude. aquí.
Por ejemplo, puede tomar cadenas como "el próximo viernes" y "15 de junio" y devolver la indicación de fecha y hora de UNIX apropiada para la fecha en la cadena. Supongo que si consideras algunas reglas básicas como buscar "next X" y los nombres de semana y mes, podrás hacer esto.
Si se pudiera localizar el "próximo viernes " de la "Voy a jugar al croquet próximo viernes" se podía extraer de la fecha. ¡Parece un proyecto divertido de hacer! Pero tenga en cuenta que strtotime
solo toma frases en inglés y no funcionará con ningún otro idioma.
Por ejemplo, una regla que localizar todos los casos "Siguiente semana" sería tan simple como:
$datestring = "I'm going to play croquet next Friday";
$weekdays = array('monday','tuesday','wednesday',
'thursday','friday','saturday','sunday');
foreach($weekdays as $weekday){
if(strpos(strtolower($datestring),"next ".$weekday) !== false){
echo date("F j, Y, g:i a",strtotime("next ".$weekday));
}
}
Esto devolverá la fecha del siguiente día hábil mencionado en la cuerda, siempre y cuando se sigue ¡la regla! En este caso particular, la salida fue June 18, 2010, 12:00 am
. Con algunas (¡quizás más que algunas!) De esas reglas, es muy probable que extraigas la fecha correcta en un alto porcentaje de los casos, considerando que los usuarios usan la ortografía correcta.
Como se ha señalado, con expresiones regulares y un poco de paciencia puede hacerlo. La parte más difícil de la codificación es decidir de qué manera abordará su problema, sin codificarlo una vez que sepa qué.
Sólo para personas de habla inglesa? –
@Serty, sí. __ – nickf