Auto Datum Erkennung

Thomas_Jung

Erfahrenes Mitglied
Hallo
Beispiel:
Ich suche nach "Rechnung 1999 01-01-2002".
Ist es möglich das php erkennt das ein Datumsformat vorhanden ist und mir es in 2002-01-01 umwandelt bevor es in der Datenbank gesucht wird.

if ($suchen_array[$i] == "DD-MM-JJJJ") wandele es in JJJJ-MM-DD um. :confused:
Ich hoffe ich habe das nicht zu kompliziert gemacht. :-)

Gruß
Thomas
 
Ich hätte zwei Lösungen anzubieten:
PHP:
<?php

	[…]

	// mit Hilfe eines regulären Ausdrucks
	if( preg_match('/([0-9]{2})\-([0-9]{2})\-([0-9]{4})/', $string, $matches) ) {
		$string = $matches[3].'-'.$matches[2].'-'.$matches[1];
	}
	// mit Hilfe der sscanf-Funktion
	if( $matches = sscanf($string, '%2d-%2d-%4d') ) {
		$string = sprintf('%04d-%02d-%02d', $matches[2], $matches[1], $matches[0]);
	}

	[…]

?>
 
Hallo Gumbo kannst Du mir hierbei nochmals helfen?

PHP:
  $_POST['field_default'] =  "12.04.2009 24:00:00";

  if( preg_match('/([0-9]{2})\.([0-9]{2})\.([0-9]{4})/', $_POST['field_default'], $matches) ) {
        $_POST['field_default'] = $matches[3].'-'.$matches[2].'-'.$matches[1];
  }

Das Ergebnis ist 2009-04-12.
Ist es Möglich nur das Datum auszutauschen so das das Ergebnis 2009-04-12 24:00:00 lautet.

Gruß Thomas
 
Klar ist auch das mölgich:
PHP:
<?php

	$_POST['field_default'] =  '12.04.2009 24:00:00';

	$_POST['field_default'] = preg_replace('/([0-9]{2})\.([0-9]{2})\.([0-9]{4})/', '\3-\2-\1', $_POST['field_default']);

?>
 
Hallo Gumbo

Hast du hier auch eine Lösung für mich :(

PHP:
 $_POST['field_default'] =  '' 'a','b','c'  "; // ENUM

Wie kann ich das Feld "field_default" auf seine Korrektheit überprüfen geht das auch mit preg_match ?

Gültige Eingaben sind 'a','b' oder 'a','b','c' oder 'a','b','c','d' usw.

Ungültige Eingaben sind 'a','b', oder ,'a','b','c' oder 'a'','b','c','d' usw.

Kannst du dir vorstellen was ich meine ;-]

Gruß Thomas
 
Probier mal Folgendes:
PHP:
preg_match('/^\x27[^\x27]+\x27(?:,\x27[^\x27]+\x27)*$/', $string)
 
Hallo Gumbo

wow, supi. dat klappt ja spitzenmäßig. danke.

:-):-):-):-):-):-):-):-):-):-):-):-):-):-):-):-):-):-)

Gruß Thomas
 

Anhänge

  • band.gif
    band.gif
    4,3 KB · Aufrufe: 124
  • dance.gif
    dance.gif
    8,7 KB · Aufrufe: 122
Zuletzt bearbeitet:
Hallo Gumbo

Will ja nicht aufdringlich erscheinen, aber kannst du mal einen Blick auf den folgenden Code
werfen und mir eventuell sagen warum er nicht richtig funktioniert.

Quelle: h..p://de.php.net/preg_match

PHP:
function Check_Date_Time($date_time)
{
 if (preg_match("/^([123456789][[:digit:]]{3})-
     (0[1-9]|1[012])-(0[1-9]|[12][[:digit:]]|3[01])
     (0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/",
     $date_time, $part) && checkdate($part[2], $part[3], $part[1]))
   {
     return true;
   }
     else
     {
     return false;
     }
}           

$my_date_time = "2006-01-02 16:50:15";

if (Check_Date_Time($my_date_time))
   {
   echo "My date '".$my_date_time."' is correct";
   }
   else
       {
   echo "My date '".$my_date_time."' is incorrect";
       }

Eigentlich müsste er doch anzeigen:
My date 2006-01-02 16:50:15 is correct oder?

Bei mir zeigt er aber
My date 2006-01-02 16:50:15 is incorrect an.

Ist die preg_match Abfrage falsch?

Gruß Thomas
 
Ändere die Funktion mal wie folgt:
PHP:
function Check_Date_Time($date_time)
{ 
	return preg_match('/^([1-2][0-9]{3})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]) (0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/', $date_time, $part) && checkdate($part[2], $part[3], $part[1]);
}
Du darfst in den regulären Ausdruck nicht einfach Leer- und/oder Zeilenumbruchzeichen einfügen.
 
Zurück