Regulärer Ausdruck

ddhb

Mitglied
Hallo!

Also folgendes Problem: Ich habe einen String
PHP:
$string = '{$var == "test} $variable {$var2 =="test2"} $variable2
Jetzt will ich das alle Variablen, bis auf jene die innerhalb der Klammern sind durch folgendes Konstrukt ersetzt werden:
PHP:
<?php echo $variable1ODER2 ?>

Nur habe ich keine Ahnung wie ich das lösen könnte das der reguläre Ausdruck die Variablen innerhalb der geschweiften Klammern ignoeriert.
 
Hallo,

ein Vorschlag:
PHP:
<?php

$string = preg_replace('/
	(
	  (?:^|})       # Anfang des Strings oder schließende Klammer
	  [^{\$]*       # weder öffnende Klammer noch Anfang einer Variable
	)
	(\$[a-z_]\w*)   # Variablenbezeichner
/ix', '$1<?php echo $2 ?>', $string);

?>

Grüße,
Matthias
 
Danke, allerdings funktioniert das nicht so ganz wie ich will...

Wenn der String jetzt folgendermaßen aussieht
PHP:
$string = '{if $type == 0}<br />$var';
Dann funktioniert das alles leider nicht mehr...
 
Hallo,

folgendes Skript:
PHP:
<?php

$string = '{if $type == 0}<br />$var';

$string = preg_replace('/
    (
      (?:^|})       # Anfang des Strings oder schließende Klammer
      [^{\$]*       # weder öffnende Klammer noch Anfang einer Variable
    )
    (\$[a-z_]\w*)   # Variablenbezeichner
/ix', '$1<?php echo $2 ?>', $string);

echo $string;

?>
…erzeugt bei mir folgende Ausgabe:
Code:
{if $type == 0}<br /><?php echo $var ?>
Wenn das nicht das gewünschte Ergebnis ist, dann hab ich wohl was falsch verstanden.

Grüße,
Matthias
 
Zurück