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