Suchen Sie JSON-Zeichenfolgen in einer Zeichenfolge

9

Ich suche nach einer Möglichkeit, JSON-Daten in einer Zeichenfolge zu finden. Denken Sie darüber nach wie Wordpress Shortcodes. Ich denke, der beste Weg, dies zu tun, wäre ein regelmäßiger Ausdruck. Ich möchte das JSON nicht analysieren, finde nur alle Vorkommen.

Gibt es im Regex eine Möglichkeit, übereinstimmende Klammern zu haben? Momentan stoße ich auf dieses Problem, wenn ich Objekte verschachtelt habe.

Kurzes Beispiel zur Demonstration:

%Vor%

Als Ergebnis möchte ich die zwei JSON-Strings haben. Danke!

    
rootman 24.02.2014, 17:28
quelle

1 Antwort

27

Extrahiert die JSON-Zeichenfolge von gegebenem Text

Da Sie nach einer vereinfachten Lösung suchen, können Sie den folgenden regulären Ausdruck verwenden, der Rekursion verwendet, um das Problem des zusammenpassenden Satzes von Klammern zu lösen. Es passt alles zwischen { und } rekursiv.

Sie sollten jedoch beachten, dass dies nicht für alle möglichen Fälle garantiert ist. Es dient nur als schnelle JSON-String-Extraktionsmethode.

%Vor%

Ausgabe:

%Vor%

Regex101 Demo

Validierung der JSON-Strings

In PHP ist die einzige Möglichkeit zu wissen, ob eine JSON-Zeichenfolge gültig ist, indem json_decode() angewendet wird. Wenn der Parser die JSON-Zeichenfolge versteht und den definierten Standards entspricht, erstellt json_decode() eine Objekt- / Array-Repräsentation der JSON-Zeichenfolge.

Wenn Sie diejenigen herausfiltern möchten, die kein gültiger JSON sind, können Sie array_filter() mit einer Callback-Funktion verwenden :

%Vor%

Online-Demo

    
Amal Murali 24.02.2014, 17:44
quelle

Tags und Links