Регулярное выражение для разбора JSON

Мне нужна помощь в написании регулярного выражения для этого шаблона в PHP:

[[{"type":"media","view_mode":"small","fid":"1","attributes":{"width":0,"height":0,"src":"http://localhost/x.png"}}]] 

Это часть текста, и я пытаюсь заменить это чем-то другим.

preg_replace_all() бы использовать preg_replace_all() но не может понять, каков будет шаблон. Любая помощь оценивается.

Solutions Collecting From Web of "Регулярное выражение для разбора JSON"

Поскольку вы говорите, что вам нужно идентифицировать эти строки JSON внутри обычной строки, вы можете использовать этот шаблон:

 '/\[\[.*?]]/s' 

имея в виду:

 \[\[ # match two consecutive '['-s .*? # reluctantly match any character ]] # match two consecutive ']'-s 

Из-за флага s . в регулярном выражении также будут соответствовать разрыву строк.

Демо-версия:

 $text = '<p>blahhah blahaa blahhah blahaablahhah blahaablahhah blahaablahhah blahaablahhah blahaablahhah blahaablahhah blahaablahhah blahaa [[{"type":"media","view_mode":"small", "fid":"1","attributes":{"width":0,"height":0,"src": "localhost/d7mw/sites/…;}}]] more blah more blah more blah more blahmore blah more blahmore blah more blahmore blah more blahmore blah more blahmore blah more blahmore blah more blahmore blah more blahmore blah more blahmore blah more blah</p>'; preg_match_all('/\[\[.*?]]/s', $text, $matches); print_r($matches); 

который будет выводить:

 Array ( [0] => Array ( [0] => [[{"type":"media","view_mode":"small", "fid":"1","attributes":{"width":0,"height":0,"src": "localhost/d7mw/sites/…;}}]] ) ) 

Это похоже на кодированные данные JSON, которые вы можете проанализировать с помощью json_decode и снова собрать с помощью json_encode . Здесь нет необходимости в регулярных выражениях.