Nur bestimmte Zeichen ersetzten
Anna
- php
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
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
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("/(?<!\[)'(?!\])/", '’', $string);
MfG ChrisB