Referenzen bei reg.Ausdrücken

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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

    Comment


    • #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

      Comment

      Working...
      X