3v4l.org

run code in 300+ PHP versions simultaneously
<?php function wd_check_serialization( $string, &$errmsg ) { $str = 's'; $array = 'a'; $integer = 'i'; $any = '[^}]*?'; $count = '\d+'; $content = '"(?:\\\";|.)*?";'; $open_tag = '\{'; $close_tag = '\}'; $parameter = "($str|$array|$integer|$any):($count)" . "(?:[:]($open_tag|$content)|[;])"; $preg = "/$parameter|($close_tag)/"; if( !preg_match_all( $preg, $string, $matches ) ) { $errmsg = 'not a serialized string'; return false; } $open_arrays = 0; foreach( $matches[1] AS $key => $value ) { if( !empty( $value ) && ( $value != $array xor $value != $str xor $value != $integer ) ) { $errmsg = 'undefined datatype'; return false; } if( $value == $array ) { $open_arrays++; if( $matches[3][$key] != '{' ) { $errmsg = 'open tag expected'; return false; } } if( $value == '' ) { if( $matches[4][$key] != '}' ) { $errmsg = 'close tag expected'; return false; } $open_arrays--; } if( $value == $str ) { $aVar = ltrim( $matches[3][$key], '"' ); $aVar = rtrim( $aVar, '";' ); if( strlen( $aVar ) != $matches[2][$key] ) { $errmsg = 'stringlen for string not match'; return false; } } if( $value == $integer ) { if( !empty( $matches[3][$key] ) ) { $errmsg = 'unexpected data'; return false; } if( !is_integer( (int)$matches[2][$key] ) ) { $errmsg = 'integer expected'; return false; } } } if( $open_arrays != 0 ) { $errmsg = 'wrong setted arrays'; return false; } return true; } var_dump(wd_check_serialization('a:1:{i:0;a:10:{s:2:"id";s:3:"390";s:12:"variation_id";s:3:"393";s:4:"name";s:38:"Serviette Absolut mit Gastro-Logodruck";s:3:"qty";s:1:"1";s:9:"item_meta";a:3:{i:0;a:2:{s:9:"meta_name";s:51:"Geben Sie bitte hier die gewünschte Zusatzfarbe an";s:10:"meta_value";s:12:"schwarzgold";}i:1;a:2:{s:9:"meta_name";s:6:"pa_vpe";s:10:"meta_value";s:6:"18-900";}i:2;a:2:{s:9:"meta_name";s:12:"pa_erstdruck";s:10:"meta_value";s:2:"ja";}}s:13:"line_subtotal";s:3:"360";s:17:"line_subtotal_tax";s:4:"68.4";s:10:"line_total";s:3:"360";s:8:"line_tax";s:4:"68.4";s:9:"tax_class";s:19:"gesetzliche-mwst-19";}}', ''));

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.3.40.0120.00318.88
8.3.30.0070.00719.13
8.3.20.0040.00420.16
8.3.10.0070.00023.64
8.3.00.0040.00419.50
8.2.170.0160.00322.96
8.2.160.0100.00320.39
8.2.150.0000.00724.18
8.2.140.0030.00624.66
8.2.130.0000.01126.16
8.2.120.0070.00022.29
8.2.110.0100.00022.24
8.2.100.0040.00718.90
8.1.270.0000.00923.83
8.1.260.0080.00026.35
8.1.250.0000.00828.09
8.1.240.0030.00618.48
8.1.230.0090.00018.55
5.4.290.0050.05612.52
5.4.280.0100.03812.41
5.4.270.0040.04012.41
5.4.260.0050.03912.41
5.4.250.0060.03812.41
5.4.240.0090.03512.41
5.4.230.0050.05112.40
5.4.220.0080.03912.41
5.4.210.0080.05112.40
5.4.200.0050.04012.41
5.4.190.0080.03412.40
5.4.180.0050.04312.40
5.4.170.0060.04012.41
5.4.160.0040.03812.41
5.4.150.0090.03312.40
5.4.140.0040.04112.08
5.4.130.0060.03812.07
5.4.120.0050.05412.03
5.4.110.0070.05112.02
5.4.100.0100.04812.03
5.4.90.0090.05212.03
5.4.80.0110.05112.02
5.4.70.0160.04512.02
5.4.60.0080.04612.02
5.4.50.0100.04412.02
5.4.40.0050.03712.01
5.4.30.0100.04812.01
5.4.20.0120.03712.00
5.4.10.0060.03512.00
5.4.00.0070.03911.50
5.3.280.0130.04512.70
5.3.270.0080.05612.73
5.3.260.0110.05212.72
5.3.250.0090.05012.72
5.3.240.0050.06412.72
5.3.230.0080.05312.71
5.3.220.0120.06012.68
5.3.210.0150.05012.68
5.3.200.0070.05112.68
5.3.190.0080.03912.68
5.3.180.0090.04512.67
5.3.170.0030.04712.67
5.3.160.0130.06312.68
5.3.150.0050.05112.68
5.3.140.0110.04712.66
5.3.130.0080.05212.65
5.3.120.0090.05112.65
5.3.110.0090.04012.66
5.3.100.0080.03912.14
5.3.90.0080.04612.12
5.3.80.0050.03812.11
5.3.70.0090.04412.11
5.3.60.0080.04612.10
5.3.50.0070.03512.05
5.3.40.0090.03712.04
5.3.30.0060.04912.01
5.3.20.0120.05311.79
5.3.10.0050.03811.75
5.3.00.0060.04411.74

preferences:
35.99 ms | 400 KiB | 5 Q