Hallo,
ich benutze für meinen JSON Code fongenden regulären Ausdruck.
	
für diesen JSON Code:
	
mit diesem Code ändere ich den Inhald der Variable "content" unter bestimmten ID (z.B. "id": "e2"). Dieser regulärer Ausdruck ist gut aber nicht genug, und könnte ich nicht weiter kommen.
Probleme:
- wenn Inhalt von content z.B. "content": "vor \", nach", beinhaltet, wird Inhalt bis \ genommen und nach wird nicht als Inhalt definiert. Dafür habe ich zum regulären Ausdruck an der Stelle [^\\\] hinzugefügt /("id":\s*"'.$id.'",.*"'.$finde.'":\s*")(.*)[^\\\](",(.*)\}{1})/iUs. Dies ist besser also hier wird bis ", gesucht aber davor kann kein \ stehen. Aber dann das Problem ist wenn es z.B. 2 mal \\ steht.
Jetzt wie kann ich so machen, dass es vor ", keine 1, 3, 5,... fache also gradzahlen von \ stehen soll??? Deswegen so, weil es 2, 4, 6 ... Stück ist dann neutralisiert sich selbst.
- bei meinem reguleären Ausdruck findet es nur die Inhalte zwischen " und ",, und wenn es aber z.B. so eine boolsche Wert "read": true, oder so eine Zahl "time": 1234567889, ist.
Wie kann mann es so machen, dass man die drei Weise mit dem gleichen Ausdruck bekommen kann.
Danke!!!
					ich benutze für meinen JSON Code fongenden regulären Ausdruck.
PHP-Code:
	
	
<?php 
$finde = 'content'; 
$umwandle = 'wwww'; 
$id = 'e2'; 
$pattern = '[B]/("id":\s*"'.$id.'",.*"'.$finde.'":\s*")(.*)(",(.*)\}{1})/iUs[/B]' ; 
echo preg_replace($pattern,'\1'.$umwandle.'\3',$json,1); 
?>
für diesen JSON Code:
PHP-Code:
	
	
$json = ' 
{ 
  "doctitle": "Test Dokument", 
  "date": "02.05.2007", 
  "locked": false, 
  "locktime": 1181258563, 
  "read": true, 
  "write": true, 
  "entry": [ 
    { 
       "id": "e1", 
       "title": "Test-Entry 1", 
       "content": "blabl ö äa ...", 
       "time": "02.05.2007", 
       "edittime": "02.05.2007", 
       "read": true, 
       "write": true, 
    }, 
    { 
       "id": "e2", 
       "title": "Test-Entry 2", 
       "content": "blabla ... <font style=\"font-size:16px\",>asd</font>", 
       "time": "02.05.2007", 
       "edittime": "02.05.2007", 
       "read": true, 
       "write": true, 
    }, 
    { 
       "id": "e3", 
       "title": "Test-Entry 3", 
       "content": "blabla ...", 
       "time": "02.05.2007", 
       "edittime": "02.05.2007", 
       "read": true, 
       "write": false, 
    } 
  ] 
} 
'; 
mit diesem Code ändere ich den Inhald der Variable "content" unter bestimmten ID (z.B. "id": "e2"). Dieser regulärer Ausdruck ist gut aber nicht genug, und könnte ich nicht weiter kommen.
Probleme:
- wenn Inhalt von content z.B. "content": "vor \", nach", beinhaltet, wird Inhalt bis \ genommen und nach wird nicht als Inhalt definiert. Dafür habe ich zum regulären Ausdruck an der Stelle [^\\\] hinzugefügt /("id":\s*"'.$id.'",.*"'.$finde.'":\s*")(.*)[^\\\](",(.*)\}{1})/iUs. Dies ist besser also hier wird bis ", gesucht aber davor kann kein \ stehen. Aber dann das Problem ist wenn es z.B. 2 mal \\ steht.
Jetzt wie kann ich so machen, dass es vor ", keine 1, 3, 5,... fache also gradzahlen von \ stehen soll??? Deswegen so, weil es 2, 4, 6 ... Stück ist dann neutralisiert sich selbst.
- bei meinem reguleären Ausdruck findet es nur die Inhalte zwischen " und ",, und wenn es aber z.B. so eine boolsche Wert "read": true, oder so eine Zahl "time": 1234567889, ist.
Wie kann mann es so machen, dass man die drei Weise mit dem gleichen Ausdruck bekommen kann.
Danke!!!
          
Kommentar