depp: Text ersetzen wenn nicht in Klammern

hi
wie kann ich mittels preg_replace einen text ersetzen unter der bedingung, dass das gefundene zu ersetzende teil des strings nicht von klammern umgeben ist.
folglich soll bei "ab(cd)efcdef" das erste "cd" nicht ersetzt werden, wobei das zweite (außerhalb der klammern) ersetzt werden soll.
thx

  1. Hiho!

    wie kann ich mittels preg_replace einen text ersetzen unter der bedingung, dass das gefundene zu ersetzende teil des strings nicht von klammern umgeben ist.
    folglich soll bei "ab(cd)efcdef" das erste "cd" nicht ersetzt werden, wobei das zweite (außerhalb der klammern) ersetzt werden soll.

    $needle = 'cd';
    $replace_with = '**';
    $haystack = 'ab(cd)efcdefxxab(cd)efcdef';
    $out = '';

    $out = preg_replace(
      '/^([^)]/',
      $replace_with,
      $haystack
    );

    print($out);

    --
    Und da wundern wir uns, dass die Mehrheit deutscher Abiturienten Heraklit für
    einen Dämmstoff hält.
    (Frank Lüdecke)