Поскольку вы говорите, что вам нужно идентифицировать эти 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/…;}}]]
)
)