Problem mit RegExp

arkel

Grünschnabel
Guten abend zusammen,
ich versuche hier schon seit geraumer Zeit, folgendes Problem in den Griff zu bekommen:
Ich parse einen Text und suche nach <code></code> (bzw.<code lang="irgendwas"></code>) -Blöcken, um den Inhalt mit Syntaxhighlighting auszustatten.

Das funktioniert mit folgendem Code:
Code:
$sString = preg_replace_callback('@<code(?:[^>]+class="([^"]+)")?[^>]*>(.*)</code>@s', 'highlightString', $sContent);

Allerdings habe ich nun in mind. einem Fall mehrere Code-Blöcke:
Code:
<code class="sql">mysqldump -h 127.0.0.1 -u root -p datenbankname | gzip &gt; dump.sql.gz </code><br />
rein: normal: <br />
<code class="sql">mysql --host=localhost --user=root --password=pass --database=datenbankname &lt; dump.sql</code><br />
zipped: <br />
<code class="sql">gunzip &lt; dump.sql.gz | mysql -u user -p datenbankname</code>

Und nun habe ich plötzlich einen großen Codeblock statt zweien.
Wieso nimmt sich denn nun der RegExp direkt alles? Hat jemand eine Idee, was ich ändern könnte?

Gruß,
Manu
 
Hallo Manu

RegExpressions suchen nach dem ersten Vorkommen von anfangs string bis zum letzten des End strings.
Dies ist die Standard "Einstellung". Dein Regex ist dann "gierig"
Du kannst dies aber mit einem Fragezeichen im Suchteil (also "(.*?)" ) oder U machen.

> Informationen hierzu <


Grüße SimonErich
 
Zurück