3v4l.org

run code in 300+ PHP versions simultaneously
<?php $js = "Morris.Donut({ element: 'piechart', data: [ {label: 'Option 1', value: $\{op1}\$ }, {label: 'Option 2', value: \${op2}\$ }, {label: 'Option 3', value: \${op3}\$ }, {label: 'Option 4', value: \${op4}\$ } ], colors: [\"#3228db\", \"#34225e\", \"#1abc3c\", \"#24495e\", \"#9b51b6\", \"#15a5a6\"], formatter: function (y) { return y + \"%\" } });"; //$op1 = 25; //$op2 = 40; //$op3 = 25; //$op4 = 10; $matches = array(); $vars = array(); $i=0; echo preg_replace("/$\{([^\}]*)\}$/", "here", $js); while(preg_match("/$\{([^\}]*)\}$/", $js, $matches)){ echo $i; print_r($matches); $vars[$i++] = $matches[1]; } print_r($vars);
Output for 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.38, 7.0.0 - 7.0.33, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
Morris.Donut({ element: 'piechart', data: [ {label: 'Option 1', value: $\{op1}$ }, {label: 'Option 2', value: ${op2}$ }, {label: 'Option 3', value: ${op3}$ }, {label: 'Option 4', value: ${op4}$ } ], colors: ["#3228db", "#34225e", "#1abc3c", "#24495e", "#9b51b6", "#15a5a6"], formatter: function (y) { return y + "%" } });Array ( )
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5
Morris.Donut({ element: 'piechart', data: [ {label: 'Option 1', value: ${op1}$ }, {label: 'Option 2', value: ${op2}$ }, {label: 'Option 3', value: ${op3}$ }, {label: 'Option 4', value: ${op4}$ } ], colors: ["#3228db", "#34225e", "#1abc3c", "#24495e", "#9b51b6", "#15a5a6"], formatter: function (y) { return y + "%" } });Array ( )

preferences:
258.24 ms | 402 KiB | 424 Q