a²: RegEx für Gurus

Beitrag lesen

Hallo Zusammen,

ich verwende die Funktion
$theText = eregi_replace('(<font [^<]*color=["|']?([^ "']*)["|']?[^>].*>([^<]*)</font>)','<fillcolor={ cmyk ' . getColorForPDF('\2', 'c') . ' ' . getColorForPDF('\2', 'm') . ' ' . getColorForPDF('\2', 'y') . ' ' . getColorForPDF('\2', 'k') . ' }>\3<fillcolor={ ' . $sDefaultTextColor . ' }>', $theText);

um HTML Code für einen PDF Generator aufzubereiten.

Leider meint es meine Expression zu gut und macht aus

-----
<h2>Bellum?</h2>
<p>Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua <font color="#635e4b">Celtae</font>, nostra Galli <&b>appellantur<&normal>. Hi omnes lingua, institutis, legibus inter se differunt. Gallos ab Aquitanis <font color="#ff3831">Garumna </font>flumen, a Belgis <font color="#01164d">Matrona </font>et Sequana dividit. </p>
<p>Horum omnium fortissimi sunt Belgae, propterea quod a cultu atque humanitate provinciae longissime absunt, minimeque ad eos mercatores saepe commeant atque ea quae ad effeminandos animos pertinent important, proximique sunt Germanis, qui trans Rhenum incolunt, quibuscum continenter bellum gerunt. </p>
-----

statt

-----
<h2>Bellum?</h2>
<p>Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua <fillcolor={ cmyk C M Y K }>Celtae<fillcolor={ cmyk 1 1 1 1 }>, nostra Galli <&b>appellantur<&normal>. Hi omnes lingua, institutis, legibus inter se differunt. Gallos ab Aquitanis <fillcolor={ cmyk C M Y K }>Garumna <fillcolor={ cmyk 1 1 1 1 }>flumen, a Belgis <fillcolor={ cmyk C M Y K }>Matrona <fillcolor={ cmyk 1 1 1 1 }>et Sequana dividit. </p>
<p>Horum omnium fortissimi sunt Belgae, propterea quod a cultu atque humanitate provinciae longissime absunt, minimeque ad eos mercatores saepe commeant atque ea quae ad effeminandos animos pertinent important, proximique sunt Germanis, qui trans Rhenum incolunt, quibuscum continenter bellum gerunt. </p>
-----

das hier:

-----
<h2>Bellum?</h2>
<p>Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua <fillcolor={ cmyk 0 0.1 0.1 0.09 }>Matrona <fillcolor={ cmyk 1 1 1 1 }>et Sequana dividit. </p>
<p>Horum omnium fortissimi sunt Belgae, propterea quod a cultu atque humanitate provinciae longissime absunt, minimeque ad eos mercatores saepe commeant atque ea quae ad effeminandos animos pertinent important, proximique sunt Germanis, qui trans Rhenum incolunt, quibuscum continenter bellum gerunt. </p>
-----

Ganz abgesehen davon, dass meine Umwandlungsfunktion für hex nach RGB nicht stimmt ;-) , verschwindet der Text zwischen dem ersten öffnenden <font bis vor das letzte <font.
Warum? Eigentlich soll für jedes
<font>...</font> ein
<fillcolor={ cmyk C M Y K }>...<fillcolor={ cmyk 1 1 1 1 }>
gesetzt werden.
Ich komme leider nicht drauf was hier nicht passt und bin für jeden Tipp dankbar.

Beste Grüße