Tom: Regular Expression

Beitrag lesen

Hello,

Wie bekomme ich es hin, dass der zweite Wert der dezimalen Angabe (also hinter dem Komma) in einem eigenen Match auftritt, wenn er vorhanden ist.

Also bei "decimal(10,2)" sollten die 10 und die 2 jeweils in einem eigenen match auftreten

Formatbeispiele:

#   bigint(20) unsigned
#   timestamp(14)
#   varchar(30)
#   set('EINS','ZWEI','DREI','VIER','FÜNF')
#   float(11,10)
#   double(11,5)
#   decimal(10,2)
#   year(2)
#   char(2)
#   enum('eins','zwei','sieben','12')

$metasum = "bigint(20) unsigned";
#$metasum = "set('EINS','ZWEI','DREI','VIER','FÜNF')";
#$metasum = "double(11,5)";
#$metasum = "timestamp(14)";
#$metasum = "time";

#$type="([a-z]{3,})";
$type="tinyint|smallint|mediumint|int|bigint|float|double|decimal|".
      "date|datetime|timestamp|time|year|char|varchar|tinyblob|".
      "tinytext|text|blob|mediumblob|mediumtext|longblob|longtext|".
      "enum|set";

#$len="([0-9]{1,3})";
#$dec=",([0-9]{1,3})";

preg_match("#^($type){1}(({1}([^)]+)){1})*(\s(unsigned){1})*#i",
   $metasum, $matches);

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau