<?php $input = <<<INPUT <p>Foo?</p> [[{ "fid":"123456","view_mode":"default","type":"media","attributes":{ "class":"css-class1 css-class2 css-class3" ,"alt":"Overridden alt attribute for embed" ,"title":"Overridden title attribute for embed" }, "fields":{ "format":"default" ,"alt":"Overridden alt attribute for embed","field_file_image_alt_text[und][0][value]":"Media alt attribute" ,"title":"Overridden title attribute for embed","field_file_image_title_text[und][0][value]":"Media title attribute"} }]] <p>Bar baz!</p> INPUT; $pattern = '/\[\[\s*(?<tag_info>\{.+\})\s*\]\]/sU'; $matches = []; var_dump(preg_match($pattern, $input, $matches)); var_dump($matches); $tag_info = $matches['tag_info']; var_dump('BEFORE'); var_dump(json_decode($tag_info)); function fix(string $parsed_potentially_broken_json): string { $r = str_replace("\n", " ", $parsed_potentially_broken_json); // This is what \Drupal\Component\Utility\Html::decodeEntities() does. return html_entity_decode($r, ENT_QUOTES, 'UTF-8'); } var_dump('AFTER'); var_dump(json_decode(fix($tag_info)));
You have javascript disabled. You will not be able to edit any code.