Regulärer Ausdruck für CSS-Parsing

Hallo,

für eine spezielle Anwendung, muss eine Excel-Datei in eine Datenbank geschrieben werden. Hierfür dürfen Formatierungen, wie beispielsweise Schriftart, nicht verloren gehen. Deshalb wird diese Excel als Webseite abgespeichert. Dabei entstehen mehrere Dateien, unter anderen eine .htm und eine .css.

Folgende CSS:

.style0
{mso-number-format:General;
text-align:general;
vertical-align:bottom;
white-space:nowrap;
mso-rotate:0;
mso-background-source:auto;
mso-pattern:auto;
color:windowtext;
font-size:10.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:Arial;
mso-generic-font-family:auto;
mso-font-charset:0;
border:none;
mso-protection:locked visible;
mso-style-name:Standard;
mso-style-id:0;}
.font6
{color:windowtext;
font-size:10.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:„Test 123“, monospace;
mso-font-charset:2;}
.font9
{color:windowtext;
font-size:10.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:„Test 123 ext.“, monospace;
mso-font-charset:2;}

Gewünschtes Ergebnis (Array, Key = CSS-Klasse, Value = Schriftart):

$font[‚font6‘] = „Test 123“;
$font[‚font9‘] = „Test 123 ext.“;

Da dies sehr komplex ist und ich hier nicht weiterkomme, bitte ich um euere Hilfe.

Vielen, vielen Dank.

Viele Grüße

Hallo,

für eine spezielle Anwendung, muss eine Excel-Datei in eine
Datenbank geschrieben werden. Hierfür dürfen Formatierungen,
wie beispielsweise Schriftart, nicht verloren gehen. Deshalb
wird diese Excel als Webseite abgespeichert. Dabei entstehen
mehrere Dateien, unter anderen eine .htm und eine .css.

Folgende CSS:

Gewünschtes Ergebnis

$font[‚font6‘] = „Test 123“;
$font[‚font9‘] = „Test 123 ext.“;

Hmmm, vielleicht habe ich Dich nicht richtig verstanden,
meinst Du in etwa sowas? =>

 ...
 $pat = '/^\.(font\w+) [^{]\* { # Einleitung finden, "(Zeilenstart).fontNN {"
 .+? font\-family # bis zu "font-family" gehen
 [\s:"]+ # Leerzeichen, Doppelpunkt bzw. " ueberspringen
 ([^,"]+) # Nimm alles bis zum naechsten Komma oder "
 /msx';
 
 # fonts einsammeln 
 preg\_match\_all($pat, $css, $m);
 $font = array\_combine($m[1], $m[2]);
 ...

Grüße

CMБ

Hallo,

genau, vielen Dank.

Viele Grüße!