Anna: Nur bestimmte Zeichen ersetzten

Hallo,

ich möchte in einem string alle ' durch ’, aber nur wenn sie nicht vor oder hinter [ oder ] stehen. Ich habe noch nie Reguläre Ausdrücke benutz, kann mir jemand sagen was ich falsch mache?

$string = "Test test['test'] noch mehr te'st test.";
print preg_replace("/(^[')+/", '’', $string);

Liebe Grüße Anna

  1. Oh, das war der alte Ausdruck, so weit bin ich aber

    print preg_replace("/([^[]'|'[^]])/", '’', $string);

    Aber ich bekomme:
    Test test[’es’] noch mehr ’st test.
    anstatt
    Test test['test'] noch mehr te’st test.

    zurück

    1. Hi,

      Oh, das war der alte Ausdruck, so weit bin ich aber

      print preg_replace("/([^[]'|'[^]])/", '’', $string);

      Du brauchst Assertions, genauer (negative) Lookahead- und Lookbehind-Assertions, um dein ' nur zu finden, wenn davor kein [ und dahinter kein ] steht:

      print preg_replace("/(?<!\[)'(?!\])/", '&#8217;', $string);

      MfG ChrisB

      --
      "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."