3v4l.org

run code in 500+ PHP versions simultaneously
<?php $input = <<<INPUT <p>Foo?</p> [[{ &quot;fid&quot;:&quot;123456&quot;,&quot;view_mode&quot;:&quot;default&quot;,&quot;type&quot;:&quot;media&quot;,&quot;attributes&quot;:{ &quot;class&quot;:&quot;css-class1 css-class2 css-class3&quot; ,&quot;alt&quot;:&quot;Overridden alt attribute for embed&quot; ,&quot;title&quot;:&quot;Overridden title attribute for embed&quot; }, &quot;fields&quot;:{ &quot;format&quot;:&quot;default&quot; ,&quot;alt&quot;:&quot;Overridden alt attribute for embed&quot;,&quot;field_file_image_alt_text[und][0][value]&quot;:&quot;Media alt attribute&quot; ,&quot;title&quot;:&quot;Overridden title attribute for embed&quot;,&quot;field_file_image_title_text[und][0][value]&quot;:&quot;Media title attribute&quot;} }]] <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)));
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.34, 8.3.0 - 8.3.4, 8.3.6 - 8.3.35, 8.4.1 - 8.4.26, 8.5.0 - 8.5.11
int(1) array(3) { [0]=> string(709) "[[{ &quot;fid&quot;:&quot;123456&quot;,&quot;view_mode&quot;:&quot;default&quot;,&quot;type&quot;:&quot;media&quot;,&quot;attributes&quot;:{ &quot;class&quot;:&quot;css-class1 css-class2 css-class3&quot; ,&quot;alt&quot;:&quot;Overridden alt attribute for embed&quot; ,&quot;title&quot;:&quot;Overridden title attribute for embed&quot; }, &quot;fields&quot;:{ &quot;format&quot;:&quot;default&quot; ,&quot;alt&quot;:&quot;Overridden alt attribute for embed&quot;,&quot;field_file_image_alt_text[und][0][value]&quot;:&quot;Media alt attribute&quot; ,&quot;title&quot;:&quot;Overridden title attribute for embed&quot;,&quot;field_file_image_title_text[und][0][value]&quot;:&quot;Media title attribute&quot;} }]]" ["tag_info"]=> string(705) "{ &quot;fid&quot;:&quot;123456&quot;,&quot;view_mode&quot;:&quot;default&quot;,&quot;type&quot;:&quot;media&quot;,&quot;attributes&quot;:{ &quot;class&quot;:&quot;css-class1 css-class2 css-class3&quot; ,&quot;alt&quot;:&quot;Overridden alt attribute for embed&quot; ,&quot;title&quot;:&quot;Overridden title attribute for embed&quot; }, &quot;fields&quot;:{ &quot;format&quot;:&quot;default&quot; ,&quot;alt&quot;:&quot;Overridden alt attribute for embed&quot;,&quot;field_file_image_alt_text[und][0][value]&quot;:&quot;Media alt attribute&quot; ,&quot;title&quot;:&quot;Overridden title attribute for embed&quot;,&quot;field_file_image_title_text[und][0][value]&quot;:&quot;Media title attribute&quot;} }" [1]=> string(705) "{ &quot;fid&quot;:&quot;123456&quot;,&quot;view_mode&quot;:&quot;default&quot;,&quot;type&quot;:&quot;media&quot;,&quot;attributes&quot;:{ &quot;class&quot;:&quot;css-class1 css-class2 css-class3&quot; ,&quot;alt&quot;:&quot;Overridden alt attribute for embed&quot; ,&quot;title&quot;:&quot;Overridden title attribute for embed&quot; }, &quot;fields&quot;:{ &quot;format&quot;:&quot;default&quot; ,&quot;alt&quot;:&quot;Overridden alt attribute for embed&quot;,&quot;field_file_image_alt_text[und][0][value]&quot;:&quot;Media alt attribute&quot; ,&quot;title&quot;:&quot;Overridden title attribute for embed&quot;,&quot;field_file_image_title_text[und][0][value]&quot;:&quot;Media title attribute&quot;} }" } string(6) "BEFORE" NULL string(5) "AFTER" object(stdClass)#1 (5) { ["fid"]=> string(6) "123456" ["view_mode"]=> string(7) "default" ["type"]=> string(5) "media" ["attributes"]=> object(stdClass)#2 (3) { ["class"]=> string(32) "css-class1 css-class2 css-class3" ["alt"]=> string(34) "Overridden alt attribute for embed" ["title"]=> string(36) "Overridden title attribute for embed" } ["fields"]=> object(stdClass)#3 (5) { ["format"]=> string(7) "default" ["alt"]=> string(34) "Overridden alt attribute for embed" ["field_file_image_alt_text[und][0][value]"]=> string(19) "Media alt attribute" ["title"]=> string(36) "Overridden title attribute for embed" ["field_file_image_title_text[und][0][value]"]=> string(21) "Media title attribute" } }
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 int(1) array(3) { [0]=> string(709) "[[{ &quot;fid&quot;:&quot;123456&quot;,&quot;view_mode&quot;:&quot;default&quot;,&quot;type&quot;:&quot;media&quot;,&quot;attributes&quot;:{ &quot;class&quot;:&quot;css-class1 css-class2 css-class3&quot; ,&quot;alt&quot;:&quot;Overridden alt attribute for embed&quot; ,&quot;title&quot;:&quot;Overridden title attribute for embed&quot; }, &quot;fields&quot;:{ &quot;format&quot;:&quot;default&quot; ,&quot;alt&quot;:&quot;Overridden alt attribute for embed&quot;,&quot;field_file_image_alt_text[und][0][value]&quot;:&quot;Media alt attribute&quot; ,&quot;title&quot;:&quot;Overridden title attribute for embed&quot;,&quot;field_file_image_title_text[und][0][value]&quot;:&quot;Media title attribute&quot;} }]]" ["tag_info"]=> string(705) "{ &quot;fid&quot;:&quot;123456&quot;,&quot;view_mode&quot;:&quot;default&quot;,&quot;type&quot;:&quot;media&quot;,&quot;attributes&quot;:{ &quot;class&quot;:&quot;css-class1 css-class2 css-class3&quot; ,&quot;alt&quot;:&quot;Overridden alt attribute for embed&quot; ,&quot;title&quot;:&quot;Overridden title attribute for embed&quot; }, &quot;fields&quot;:{ &quot;format&quot;:&quot;default&quot; ,&quot;alt&quot;:&quot;Overridden alt attribute for embed&quot;,&quot;field_file_image_alt_text[und][0][value]&quot;:&quot;Media alt attribute&quot; ,&quot;title&quot;:&quot;Overridden title attribute for embed&quot;,&quot;field_file_image_title_text[und][0][value]&quot;:&quot;Media title attribute&quot;} }" [1]=> string(705) "{ &quot;fid&quot;:&quot;123456&quot;,&quot;view_mode&quot;:&quot;default&quot;,&quot;type&quot;:&quot;media&quot;,&quot;attributes&quot;:{ &quot;class&quot;:&quot;css-class1 css-class2 css-class3&quot; ,&quot;alt&quot;:&quot;Overridden alt attribute for embed&quot; ,&quot;title&quot;:&quot;Overridden title attribute for embed&quot; }, &quot;fields&quot;:{ &quot;format&quot;:&quot;default&quot; ,&quot;alt&quot;:&quot;Overridden alt attribute for embed&quot;,&quot;field_file_image_alt_text[und][0][value]&quot;:&quot;Media alt attribute&quot; ,&quot;title&quot;:&quot;Overridden title attribute for embed&quot;,&quot;field_file_image_title_text[und][0][value]&quot;:&quot;Media title attribute&quot;} }" } string(6) "BEFORE" NULL string(5) "AFTER" object(stdClass)#1 (5) { ["fid"]=> string(6) "123456" ["view_mode"]=> string(7) "default" ["type"]=> string(5) "media" ["attributes"]=> object(stdClass)#2 (3) { ["class"]=> string(32) "css-class1 css-class2 css-class3" ["alt"]=> string(34) "Overridden alt attribute for embed" ["title"]=> string(36) "Overridden title attribute for embed" } ["fields"]=> object(stdClass)#3 (5) { ["format"]=> string(7) "default" ["alt"]=> string(34) "Overridden alt attribute for embed" ["field_file_image_alt_text[und][0][value]"]=> string(19) "Media alt attribute" ["title"]=> string(36) "Overridden title attribute for embed" ["field_file_image_title_text[und][0][value]"]=> string(21) "Media title attribute" } }

preferences:
43.8 ms | 1177 KiB | 10 Q