Zappzarapp: preg_replace

Hallo.
Ich suche nach einem Script/Code, mit dem ich einen Text der nicht in Klammern ist ersetzen kann.
Ich habe dann hier auch einen Code gefunden, der das macht.
Leider verschluckt dieser jedesmal das Zeichen davor.
Kann mir jemand dabei behilflich sein, das Problem zu beheben?

Hier der Code:
$needle = 'cd';
$replace_with = '**';
$haystack = 'ab(cd)efcdefxxab(cd)efcdef';
$out = '';

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

print($out);

Danke, gruß ZZ

  1. echo $begrüßung;

    Ich suche nach einem Script/Code, mit dem ich einen Text der nicht in Klammern ist ersetzen kann.
    Leider verschluckt dieser jedesmal das Zeichen davor.

    Wenn du nach Zeichen suchst, die nicht Bestandteil des zu findenden Ausdrucks sein sollen, kannst du Assertions verwenden. Zu finden im Kapitel PCRE Pattern Syntax (hat leider keinen Anker zum Direktanspringen).

    echo "$verabschiedung $name";

    1. Vielen Dank erstmal.
      Das Problem ist, das ich keinerlei Ahnung von den ganzen Zeichen in dem preg_replace String habe.
      Leider habe ich dafür auch noch keine Deutsche Seite gefunden, die das so erklärt, das ich es verstehe ;)
      Ist es überhaupt möglich nur Texte die nicht in Klammern stehen zu ersetzen?

      gruß ZZ

      1. Hallo Zappzarapp.

        Das Problem ist, das ich keinerlei Ahnung von den ganzen Zeichen in dem preg_replace String habe.
        Leider habe ich dafür auch noch keine Deutsche Seite gefunden, die das so erklärt, das ich es verstehe ;)

        Wie steht es mit dieser?

        Einen schönen Samstag noch.

        Gruß, Mathias

        --
        ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
        debian/rules
        1. Danke :-)
          Habe nun ne Menge rumgetestet,  aber nicht hinbekommen.
          Ich verstehe nicht, warum er bei:
          $out = preg_replace('/^([^)]/', $replace_with, $haystack);
          beim ersetzen den Buchstaben dahinter und davor wegmacht und wie man das verhindern kann.

          gruß ZZ

          1. echo $begrüßung;

            Habe nun ne Menge rumgetestet,  aber nicht hinbekommen.
            Ich verstehe nicht, warum er bei:
            $out = preg_replace('/^([^)]/', $replace_with, $haystack);
            beim ersetzen den Buchstaben dahinter und davor wegmacht und wie man das verhindern kann.

            Alles was du in dem Suchmuster angibst wird von der RegExp-Maschine für das Bilden des gesuchten Wertes verwendet. Wenn du das für die Klammern nicht willst, kannst du das, wie ich bereits schrieb, mit Assertions verhindern, die auch auf der von Mathias verlinkten Seite beschrieben sind.

            echo "$verabschiedung $name";