Erledigt: preg_replace: Quotes

 


Dollr
Gast

04.12.09
14:34 Uhr
hallo –

  1. $z="das \"harte Gerät\" des \"Obama\".";
  2.  
  3. $z=preg_replace("#(\")([^\s]*)(\")#i","„$2”",$z);
  4.  
  5. print($z);
  6.  
  7. // ergibt: das "harte Gerät" des „Obama”.
  8. // gewünscht: das „harte Gerät” des „Obama”.
Quelltext in Zwischenablage kopieren

gewiss eine Sache von [^\s] – wobei eigtl. nur geprüft werden sollte,
ob dem Quote-Zeichen kein Leerzeichen folgt;

Ideen?
Link zu diesem Beitrag in die Zwischenablage kopieren
pdd
Stammgast

04.12.09
14:58 Uhr
Editiert: 04.12.09, 15:03 Uhr
Rekursion hörthört

  1. "#\"((?!\").)*?|(?R))\"#i","„$1”"
Quelltext in Zwischenablage kopieren
Ohne Gewähr. Du musst mit einer Schleife solange wiederholen, bis der Ausdruck nichts mehr trifft.
Link zu diesem Beitrag in die Zwischenablage kopieren
Dollr
Gast

04.12.09
15:30 Uhr
brain

  1. #(\")(.*?)(\")#i
Quelltext in Zwischenablage kopieren

trotzdem Danke, pdd (wenngleich Warning: Compilation failed: recursive call could loop indefinitely“ ...)
Link zu diesem Beitrag in die Zwischenablage kopieren
 
#