Mit preg_replace "umgekehrt" replacen
NeoVanGoth
- php
3 wahsaga2 Joachim1 NeoVanGoth
Guten morgen,
ich stehe gerade etwas auf dem Schlauch und grüble über mein altes Lieblings-Problem:
Ist es möglich, in einer Perl-kompatiblen RegEx in PHP gewissermaßen umgekehrt zu suchen?
Beispiel: Um alles innerhalb von Quotes zu replacen, würde ich z.B. preg_replace('/"[^"]*"/', '""', $foo) benutzen. Die Frage ist nun, wie das umgekehrt gehen würde, d.h. alles AUSSERhalb von Quotes zu entfernen.
Vielen Dank für die Hilfe
hi,
Beispiel: Um alles innerhalb von Quotes zu replacen, würde ich z.B. preg_replace('/"[^"]*"/', '""', $foo) benutzen. Die Frage ist nun, wie das umgekehrt gehen würde, d.h. alles AUSSERhalb von Quotes zu entfernen.
Also vor einem " alles matchen, was selber kein " ist, dazwischen etwas, was kein " ist, dann noch mal ein schliessendes ", und alles nachfolgende, was kein " ist? Und dann vielleicht nur den Mittelteil übrig lassen?
Sowas wie
$text = 'Er sagte, "Hallo", und sie erwiderte, "Na, was gibt\'s?" - es war eine sehr interessante Konversation ...';
echo preg_replace('/[^"]*("[^"]*")[^"]*/u', '$1', $text);
Ausgabe:
"Hallo""Na, was gibt's?"
gruß,
wahsaga
Hi,
Die Frage ist nun, wie das umgekehrt gehen würde, d.h. alles AUSSERhalb von Quotes zu entfernen.
sowas?
$str = 'lala is lala und "foo" bar "foobar" lala';
$reg = "#[^"]*"([^"]*)"[^"]*#i";
echo preg_replace ($reg, "\1 ", $str);
Gruesse, Joachim
Aaaaaaah ich Kaaskopp, da bin ich ja schön auf dem Schlauch gestanden!
Vielen Dank nochmal!