Referenzen bei reg.Ausdrücken

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Referenzen bei reg.Ausdrücken

    Hallo zusammen,

    ich hab ein kleines Problem mit Referenzen im Zusammenspiel
    mit reg.Ausdrücken.

    Ich habe zwei Variablen, wobei eine Variable eine Referenz auf
    die andere enthält. Ändere ich den Inhalt der einen, so wird
    der Inhalt der anderen automatisch mitgeändert
    Beispiel:
    PHP-Code:
       $var1=array("abc");
       
    $var2="abc";
       
    var_dump($var1);
       echo 
    "var1:".$var1."<br>var2:".$var2."<br><br>";
       
    $var1=& $var2;
       
    $var2="def";
       
    var_dump($var1);
       echo 
    "var1:".$var1."<br>var2:".$var2."<br><br>"
    Dieses Beispiel funktioniert Prima!

    Ändere ich die Variablen jedoch mittels eine reg.Ausdrucks
    geht irgendwie die Referenz verloren, und die Variable behält
    ihren alten Wert :
    PHP-Code:
      $var1=array("abc");
      
    $var2="abc";
      
    $vPattern = array("/abc/");
      
    $vReplace = array(& $var2);
      
    $var1 preg_replace($vPattern$vReplace$var1);
      
    var_dump($var1);
      echo 
    "<br>var1:".$var1."<br>var2:".$var2."<br><br>";
      
    $var2="def";
      
    var_dump($var1);
      echo 
    "<br>var1:".$var1."<br>var2:".$var2."<br><br>"
    Habe ich irgendwo einen Denkfehler? Oder mache ich sonsts
    was falsch?

    Achso, so siehts bei mir aus : Apache/1.3.31 (Win32) PHP/5.0.3


    Besten dank und Gruss

  • #2
    Re: Referenzen bei reg.Ausdrücken

    Ich denke dass bei $vReplace nur eine Kopie übergeben wird an preg_replace, ob die Variable jetzt eine Referenz ist oder nicht, sie wird halt kopiert...so würde ich sagen, kannst ja mal &$vReplace beim Funktionsaufruf verwenden (versprechen tu ich dir aber nix)

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      habs probiert, das ergebnis bleibt aber das selbe...
      ich vermute mal, dass beim replace der "aktuelle" wert, und nicht
      die referenz gesetzt wird.was aber nicht ganz richtig wäre

      Kommentar

      Lädt...
      X