2017-11-21 4 views
0

Ich habe den folgenden Text:findet bestimmten Teil Zeichenfolge basierend auf einer Eingabe - PHP regexp

[[{"type":"media","view_mode":"media_original","fid":"19125","attributes":{"alt":"","class":"media-image","height":"480","typeof":"foaf:Image","width":"480"}}]] 

Sed iaculis, nisl vel accumsan condimentum, orci felis congue pede, nec pharetra quam ante nec ligula. 

    [[{"type":"media","view_mode":"media_original","fid":"16145","attributes":{"alt":"","class":"media-image","height":"480","typeof":"foaf:Image","width":"480"}}]] 

Ich mag den ersten Absatz des Textes (Abschnitt in Klammern) auszuwählen, basierend auf dem fid (19125) .

Dies ist meine aktuelle regexp:

[\[].[^;]*[\]\)]] 

Aber jetzt wird es beide Versionen finden. Ich möchte das so einstellen, dass es nur den mit der richtigen FID (19125) bekommt.

+0

Warum nicht einfach 'json_decode' verwenden und den Wert erhalten? – ctwheels

+0

@ctwheels Ich denke, das OP bedeutet den ganzen Code-Block (zwei JSON-Strings und der Text zwischen ihnen) ist die Eingabe. – mingos

+0

@mingos das macht Sinn, danke für die Klärung – ctwheels

Antwort

2

Sie müssen nur die ID zu Ihrem Regex hinzufügen. Ich habe die Regex leicht geändert, so dass [^;]* in [^;]*"fid":"19125"[^;]* umgewandelt wurde. Welche ist in etwa vergleichbar mit nur tun, in jedem Spiel ein enthält, um zu sehen, ob fid gleich 19125.

[\[].[^;]*"fid":"19125"[^;]*[\]\)]]

Demo

Verwandte Themen