Zeichenkette zwischen zwei Strings ersetzen (preg_replace)

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

  • Zeichenkette zwischen zwei Strings ersetzen (preg_replace)

    Hallo allerseits,

    hab ne Frage zu "preg_replace(Suchmuster,Ersatz, Textausdruck)"-Funktion:

    Input: XML-Tag: <Material DEF="Nr1" color="R G B" .../>

    ich muss bei jedem Feld <Material DEF="Nr1"... /> 'color' auf bestimmtes Wert setzen, also 'preg_replace()', kamm aber mit der Suchkriteriendefinition nicht weiter,

    habe bisher das:

    [COLOR=blue]$text='<Material DEF="Nr1" color="R G B" .../>';
    $ersatz='color="1 1 0"';

    $string = preg_replace('|(<Material DEF="Nr1" )(o)(/>)|U', "$1".$ersatz."$3", $text); [/COLOR]


    was mache ich da falsch? oder kannn mir jemand einen Link geben, wo ich die Suchkriterien-Definition selber lernen könnte?

    Danke im Voraus!
    GK

  • #2
    vielleicht hilft dir das hier weiter. besonders die abschnitte "klammern" und "rückbezüge"

    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Danke für den Link -sehr aufschlüssreich!!!

      aber die Funktionsweise von "preg_replace(Suchmuster,[COLOR=red]Ersatz[/COLOR],String) ist nicht so ganz klar geworden. Ich bin soweit gekommen:

      [COLOR=green]
      $a='<Material DEF="Material_2" diffuseColor="0.9 0.5 0" transparency="0.0" />';

      $r=0.2; $g=0.3; $b=0.4;
      $Name='M_2';

      $b=preg_replace("|(<Material DEF=\")(.+\w)(\".+\w[^>]diffuseColor=\")(.+\w)(\".+\w[^>])|Ui", "$1 ".$Name." $3 ".$r." ".$g." ".$b." $5", $a );
      [/COLOR]
      ich will im string $a den Namen und die diffuseColor-Werte ersetzen, aber was habe ich da falsch gemacht?

      Danke im Voraus!
      GK

      Kommentar

      Lädt...
      X