3v4l.org

run code in 300+ PHP versions simultaneously
<?php echo mb_internal_encoding(), "\n\n\n"; /* premier test: on convertit en ISO-8859-1 pour produire des séquences UTF-8 invalides. Bien entendu, comme mb_internal_encoding est UTF-8, c'est dans cette encodage que mb_strlen va tenter de les lire. On remarque l'incohérence des résultats pour PHP < 8.3, résultats qui dépendent de la localisation du caractère  dans la chaîne. */ $test1 = [ 'mAm', 'mÂ', 'mÂm', 'mÂÂm' ]; echo "test 1:\n\n"; foreach ($test1 as $s) { printf( "%s:\n UTF-8: %d ISO-8859-1: %d\n", $s, mb_strlen($s), mb_strlen(mb_convert_encoding($s, 'ISO-8859-1', 'UTF-8')) ); } echo "\n\n\n"; /* ici on teste le caractère U+2030 ‰ e2 80 b0 PER MILLE SIGN, on interrompt sa séquence et on essaie différents cas de figure pour la suite */ $test2 = ["\xe2\x80\xb0", "\xe2\x80", "\xe2\x80L", "\xe2\x80\xe2\x80", "\xe2\x80LL"]; echo "test 2:\n\n"; foreach ($test2 as $s) { printf( "%s: UTF-8: %d\n", $s, mb_strlen($s) ); }

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.70.0090.00918.38
8.3.60.0090.00616.72
8.3.50.0120.00318.36
8.3.40.0100.00721.59
8.3.30.0110.00418.98
8.3.20.0070.00721.68
8.3.10.0110.00323.63
8.3.00.0090.00618.89
8.2.190.0180.00016.75
8.2.180.0040.01116.63
8.2.170.0120.00419.25
8.2.160.0070.00720.22
8.2.150.0120.00319.22
8.2.140.0040.01120.64
8.2.130.0000.01420.70
8.2.120.0070.00719.47
8.2.110.0090.00619.47
8.2.100.0060.00919.34
8.2.90.0100.00618.95
8.2.80.0100.00621.20
8.2.70.0120.00320.70
8.2.60.0040.01120.70
8.2.50.0090.00619.47
8.2.40.0110.00419.13
8.2.30.0120.00318.90
8.2.20.0040.01218.95
8.2.10.0120.00318.86
8.2.00.0040.01219.01
8.1.280.0100.01025.92
8.1.270.0070.00722.32
8.1.260.0080.00822.09
8.1.250.0100.00322.27
8.1.240.0120.00318.66
8.1.230.0120.00318.65
8.1.220.0090.00618.95
8.1.210.0120.00318.63
8.1.200.0040.01120.71
8.1.190.0070.00720.63
8.1.180.0110.00420.42
8.1.170.0110.00420.67
8.1.160.0100.00718.51
8.1.150.0120.00619.05
8.1.140.0130.00619.00
8.1.130.0070.00720.76
8.1.120.0070.00720.62
8.1.110.0150.00020.59
8.1.100.0070.00721.60
8.1.90.0110.00420.41
8.1.80.0060.00921.73
8.1.70.0110.00420.79
8.1.60.0110.00420.71
8.1.50.0150.00020.54
8.1.40.0070.00720.66
8.1.30.0070.00720.90
8.1.20.0140.00721.95
8.1.10.0150.00620.64
8.1.00.0180.00418.76

preferences:
31.14 ms | 401 KiB | 5 Q