3v4l.org

run code in 300+ PHP versions simultaneously
<?php // CNIFRA ou CNIBEL ou PERMIS ou TITRESEJOUR ou REGNAT ou CARTEGRISE $type = "PERMIS"; //code pour le permis $codePermis ="D1FRA15AB21140*301027LEFEVRE<*"; /*-------CNI francaise---------*/ //code pour la CNIFRA 1er ligne $codeCNI ="IDFRABEKDI<<<<<<<<<<<<<<<<<<<<271051"; //code pour la CNIFRA 2eme ligne $codeCNI2 ="100727101235*DJAMEL<<<<<<<<810131*M*"; $codeCNI3 =$codeCNI2; $codeCNI4 =$codeCNI2; /*-------END CNI francaise---------*/ /*-------CNI Belge---------*/ //code pour la CNIBELGE (ligne jusqu'a la derniere cle de controle) $codeCNIBEL = "IDBEL592273047<809*<<<<<<<<<<<910312*M251230*BEL91031244758*"; //code suivant la derniere cle de controle $codeCNIBEL2 = "DE<NOBREGA<<ALEXANDRE<EMMANUEL"; $codeCNIBEL3 = $codeCNIBEL; $codeCNIBEL4 = $codeCNIBEL; /*-------END CNI Belge---------*/ //code pour le titre de sejour (ligne jusqu'a la derniere cle de controle) $codeTitreSejour = "IRFRA2JA3VISG5*<9915026763<<<<900201*M161231*CMR<<<<<<<<<<<*"; //code suivant la derniere cle de controle $codeTitreSejour2 = "MEYE<MINKOA<<YOHAN<<BORIS<<<<<<"; $codeTitreSejour3 = $codeTitreSejour; $codeTitreSejour4 = $codeTitreSejour; //code pour le registre national belge $codeRegNat="910524295"; //code pour la carte grise $codeCarteGrise = "CRFRAAB123CD*VF7X18E00018E8472*980105*VP<<<<CI<<MERSSAIDESS<<<SR220TD<<<<<<98TN036623<**"; $codeCarteGrise2 = $codeCarteGrise; $codeCarteGrise3 = $codeCarteGrise; $TABCode = []; $TABCode2 = []; $allcode=""; $allCleControle=""; if($type == "CNIBEL") { $TABCode = explode('*',$codeCNIBEL); array_splice($TABCode, count($TABCode)-1); $TABCode[0] = substr($TABCode[0],5); $TABCode[2] = substr($TABCode[2],1); $codeCNIBEL3 = substr_replace($codeCNIBEL3 ,"",-1); for ($i = 0; $i < 3; $i++) { array_push($TABCode2,verifSomme($TABCode[$i])); } for ($i = 0; $i < count($TABCode2); $i++) { $codeCNIBEL3 = str_replace_first('*', $TABCode2[$i],$codeCNIBEL3); } //retirer tout les caracteres non numeric (except < ) dans le code $res = preg_replace("/[^0-9<]/", "",$codeCNIBEL3); array_push($TABCode2,verifSomme($res)); for ($i = 0; $i < count($TABCode2); $i++) { $codeCNIBEL4 = str_replace_first('*', $TABCode2[$i],$codeCNIBEL4); } for ($i = 0; $i < count($TABCode2); $i++) { $allCleControle .= $TABCode2[$i]." "; } echo htmlspecialchars($codeCNIBEL4); echo htmlspecialchars($codeCNIBEL2); echo'<br>'; echo'<br>'; echo $allCleControle; } if($type == "CARTEGRISE") { $TABCode = explode('*',$codeCarteGrise); array_splice($TABCode, count($TABCode)-2); $TABCode[0] = substr($TABCode[0],-7); $TABCode[3] = substr($TABCode[3],-11); for ($i = 0; $i < count($TABCode); $i++) { array_push($TABCode2,verifSomme($TABCode[$i])); } for ($i = 0; $i < count($TABCode2); $i++) { $codeCarteGrise2 = str_replace_first('*', $TABCode2[$i],$codeCarteGrise2); } $codeCarteGrise2 = substr_replace($codeCarteGrise2 ,"",-1); array_push($TABCode2,verifSomme($codeCarteGrise2)); for ($i = 0; $i < count($TABCode2); $i++) { $codeCarteGrise3 = str_replace_first('*', $TABCode2[$i],$codeCarteGrise3); } for ($i = 0; $i < count($TABCode2); $i++) { $allCleControle .= $TABCode2[$i]." "; } echo htmlspecialchars($codeCarteGrise3); echo'<br>'; echo'<br>'; echo $allCleControle; } if($type == "TITRESEJOUR"){ $TABCode = explode('*',$codeTitreSejour); array_splice($TABCode, count($TABCode)-1); $TABCode[0] = substr($TABCode[0],-9); $TABCode[1] = substr($TABCode[1],-6); $TABCode[2] = substr($TABCode[2],-6); for ($i = 0; $i < 3; $i++) { array_push($TABCode2,verifSomme($TABCode[$i])); } for ($i = 0; $i < count($TABCode2); $i++) { $codeTitreSejour3 = str_replace_first('*', $TABCode2[$i],$codeTitreSejour3); } array_push($TABCode2,verifSomme($codeTitreSejour3)); for ($i = 0; $i < count($TABCode2); $i++) { $codeTitreSejour4 = str_replace_first('*', $TABCode2[$i],$codeTitreSejour4); } for ($i = 0; $i < count($TABCode2); $i++) { $allCleControle .= $TABCode2[$i]." "; } echo htmlspecialchars($codeTitreSejour4); echo htmlspecialchars($codeTitreSejour2); echo'<br>'; echo'<br>'; echo $allCleControle; } if($type == 'PERMIS'){ $TABCode = explode('*',$codePermis); array_splice($TABCode, count($TABCode)-1); for ($i = 0; $i < count($TABCode); $i++) { array_push($TABCode2,verifSomme($TABCode[$i])); if($i+1 == count($TABCode)-1){ for ($j = 0; $j < count($TABCode); $j++) { $allcode .= $TABCode[$j]; if(isset($TABCode2[$j])){ $allcode .= $TABCode2[$j]; } } array_push($TABCode2,verifSomme($allcode)); $allcode .= $TABCode2[count($TABCode2)-1]; break; } } for ($i = 0; $i < count($TABCode2); $i++) { $allCleControle .= $TABCode2[$i]." "; } echo htmlspecialchars($allcode); echo'<br>'; echo $allCleControle; } if($type == 'CNIFRA'){ $TABCode = explode('*',$codeCNI2); array_splice($TABCode, count($TABCode)-1); $TABCode[1] = substr($TABCode[1],-6); for ($i = 0; $i < 2; $i++) { array_push($TABCode2,verifSomme($TABCode[$i])); } for ($i = 0; $i < count($TABCode2); $i++) { $codeCNI3 = str_replace_first('*', $TABCode2[$i],$codeCNI3); } $codeCNI3 = substr_replace($codeCNI3 ,"",-1); array_push($TABCode2,verifSomme($codeCNI.$codeCNI3)); for ($i = 0; $i < count($TABCode2); $i++) { $codeCNI4 = str_replace_first('*', $TABCode2[$i],$codeCNI4); } for ($i = 0; $i < count($TABCode2); $i++) { $allCleControle .= $TABCode2[$i]." "; } echo htmlspecialchars($codeCNI4); echo'<br>'; echo $allCleControle; } if($type == 'REGNAT'){ echo 97 - ($codeRegNat % 97); } function verifSomme($ligne) { $factors = array(7,3,1); $result = 0; $offset = 0; foreach(str_split($ligne,1) as $char) { if($char == '<') { $char = 0; //ord('A') <= ord($char) <= ord('Z') } elseif(ord($char) >= 65 && ord($char) <= 90) { $char = ord($char) - 55; } elseif($char >= 0 && $char <= 9) { $char = intval($char); } else { die('caractère hors borne'); } $result += $char*$factors[$offset%3]; $offset++; } return $result % 10; } function str_replace_first($from, $to, $content) { $from = '/'.preg_quote($from, '/').'/'; return preg_replace($from, $to, $content, 1); } ?>

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.60.0140.00418.30
8.3.50.0070.00718.23
8.3.40.0160.00019.09
8.3.30.0140.00318.96
8.3.20.0040.00424.18
8.3.10.0000.00724.66
8.3.00.0050.00326.16
8.2.180.0160.00325.92
8.2.170.0080.00819.04
8.2.160.0040.01122.96
8.2.150.0040.00425.66
8.2.140.0030.00624.66
8.2.130.0000.00826.16
8.2.120.0070.00326.35
8.2.110.0030.00622.16
8.2.100.0000.01219.64
8.2.90.0040.00417.75
8.2.80.0040.00418.86
8.2.70.0080.00017.75
8.2.60.0110.00018.05
8.2.50.0080.00018.05
8.2.40.0080.00019.76
8.2.30.0030.00518.19
8.2.20.0040.00418.20
8.2.10.0040.00419.54
8.2.00.0040.00419.39
8.1.280.0140.00725.92
8.1.270.0040.00423.99
8.1.260.0080.00028.09
8.1.250.0000.00928.09
8.1.240.0040.00423.81
8.1.230.0090.00321.23
8.1.220.0050.00317.74
8.1.210.0000.00818.77
8.1.200.0030.00617.35
8.1.190.0000.00917.48
8.1.180.0090.00418.10
8.1.170.0000.00818.63
8.1.160.0030.00619.16
8.1.150.0050.00319.05
8.1.140.0090.00020.67
8.1.130.0000.00720.18
8.1.120.0080.00017.65
8.1.110.0000.00817.59
8.1.100.0000.00817.61
8.1.90.0000.00717.68
8.1.80.0090.00017.52
8.1.70.0000.00917.67
8.1.60.0080.00017.72
8.1.50.0030.00517.51
8.1.40.0000.00917.64
8.1.30.0040.00417.66
8.1.20.0000.00817.80
8.1.10.0040.00417.80
8.1.00.0070.00317.69
8.0.300.0000.00918.77
8.0.290.0060.00316.88
8.0.280.0040.00418.57
8.0.270.0000.00818.08
8.0.260.0000.00818.57
8.0.250.0050.00317.13
8.0.240.0030.00317.12
8.0.230.0030.00317.01
8.0.220.0050.00216.97
8.0.210.0030.00317.03
8.0.200.0080.00016.98
8.0.190.0060.00317.07
8.0.180.0000.00817.08
8.0.170.0040.00417.03
8.0.160.0070.00017.04
8.0.150.0060.00317.04
8.0.140.0000.00716.90
8.0.130.0060.00013.45
8.0.120.0040.00417.02
8.0.110.0030.00616.96
8.0.100.0040.00417.17
8.0.90.0020.00517.09
8.0.80.0110.00717.06
8.0.70.0000.00817.13
8.0.60.0030.00617.08
8.0.50.0040.00416.92
8.0.30.0070.01116.97
8.0.20.0150.00417.22
8.0.10.0120.01517.05
8.0.00.0150.00617.42
7.4.330.0050.00015.55
7.4.320.0030.00316.77
7.4.300.0000.00616.82
7.4.290.0030.00316.77
7.4.280.0060.00316.68
7.4.270.0000.00716.76
7.4.260.0050.00013.44
7.4.250.0090.00016.74
7.4.240.0030.00516.72
7.4.230.0040.00416.88
7.4.220.0050.00216.72
7.4.210.0050.01116.74
7.4.200.0040.00416.66
7.4.150.0140.00716.62
7.4.140.0110.01116.62
7.4.130.0030.01816.72
7.4.120.0060.01416.47
7.4.110.0070.01116.65
7.4.100.0110.00816.56
7.4.90.0040.01516.57
7.4.80.0070.01016.67
7.4.70.0090.00916.68
7.4.60.0060.01216.49
7.4.50.0070.01116.72
7.4.40.0120.00616.54
7.4.30.0140.00316.64
7.4.20.0060.01216.73
7.4.10.0110.00716.70
7.4.00.0180.00016.68
7.3.330.0000.00716.54
7.3.320.0030.00313.35
7.3.310.0000.00716.54
7.3.300.0030.00516.40
7.3.290.0090.00916.54
7.3.270.0070.01016.66
7.3.260.0120.01216.67
7.3.250.0120.00916.58
7.3.240.0090.01216.80
7.3.230.0090.00916.71
7.3.220.0140.00416.65
7.3.210.0070.01116.81
7.3.200.0090.00916.86
7.3.190.0110.00716.65
7.3.180.0110.00716.48
7.3.170.0100.00716.53
7.3.160.0140.00616.77
7.3.150.0090.00916.52
7.3.140.0120.00916.71
7.3.130.0140.00316.56
7.3.120.0110.00616.73
7.3.110.0150.00316.54
7.3.100.0100.00716.54
7.3.90.0030.01416.46
7.3.80.0120.00616.75
7.3.70.0030.01916.53
7.3.60.0100.00716.56
7.3.50.0030.01316.59
7.3.40.0110.00716.57
7.3.30.0120.00616.61
7.3.20.0040.01616.70
7.3.10.0100.00716.45
7.3.00.0120.00616.47

preferences:
52.9 ms | 400 KiB | 5 Q