3v4l.org

run code in 300+ PHP versions simultaneously
<? // Кодировка текста кода и текста страницы UTF8 header('Content-Type: text/html; charset=utf-8'); ?> <form method="POST"> <div> HEX строка:<br> <textarea name="bdata" rows="5" cols="80"><?if (isset($_POST['bdata'])) echo htmlspecialchars($_POST['bdata']);?></textarea><br> <br> Искомый текст (если не требуется замена, оставить пустым):<br> <input type="text" name="text_src" size="75" value="<?if (isset($_POST['text_src'])) echo htmlspecialchars($_POST['text_src']);?>"><br> Новый текст (если не требуется замена, оставить пустым):<br> <input type="text" name="text_dst" size="75" value="<?if (isset($_POST['text_dst'])) echo htmlspecialchars($_POST['text_dst']);?>"><br> <br> Искомое имя шрифта (если не требуется замена, оставить пустым):<br> <input type="text" name="font_src" size="40" value="<?if (isset($_POST['font_src'])) echo htmlspecialchars($_POST['font_src']);?>"><br> Новое имя шрифта (если не требуется замена, оставить пустым):<br> <input type="text" name="font_dst" size="40" value="<?if (isset($_POST['font_dst'])) echo htmlspecialchars($_POST['font_dst']);?>"><br> <br> Искомый размер шрифта (если не требуется замена, оставить пустым):<br> <input type="number" name="font_size_src" size="5" min="1" max="128" value="<?if (isset($_POST['font_size_src'])) echo htmlspecialchars($_POST['font_size_src']);?>"><br> Новый размер шрифта (если не требуется замена, оставить пустым):<br> <input type="number" name="font_size_dst" size="5" min="1" max="128" value="<?if (isset($_POST['font_size_dst'])) echo htmlspecialchars($_POST['font_size_dst']);?>"><br> <br> Искомый цвет шрифта (в формате aabbcc, если не требуется замена, оставить пустым):<br> <input type="text" name="text_color_src" size="10" value="<?if (isset($_POST['text_color_src'])) echo htmlspecialchars($_POST['text_color_src']);?>"><br> Новый цвет шрифта (в формате aabbcc, если не требуется замена, оставить пустым):<br> <input type="text" name="text_color_dst" size="10" value="<?if (isset($_POST['text_color_dst'])) echo htmlspecialchars($_POST['text_color_dst']);?>"><br> <br> <input type="submit" value="Заменить"> </div> </form> <? if (!isset($_POST['bdata'])) die(); // Функция формирования UTF16 фрагмента (на выходе и выходе строка) function utf16($utf8Text) { return "(\xfe\xff".addcslashes(mb_convert_encoding($utf8Text, 'UTF-16', 'UTF-8'), '()\\').")"; }; // Функция преобразования в HEX формат (на выходе и выходе строка) function hex($text) { return reset(unpack('H*', $text)); } function color($hex) { $color = @pack('H*', $hex); if (strlen($color) != 3) return 'ERROR'; $c1 = ord($color[0]); $c2 = ord($color[1]); $c3 = ord($color[2]); $c1 = ($c1 == 255) ? '1.0' : substr(round($c1 / 255, 5), 1); $c2 = ($c2 == 255) ? '1.0' : substr(round($c2 / 255, 5), 1); $c3 = ($c3 == 255) ? '1.0' : substr(round($c3 / 255, 5), 1); return "[ 1.0 $c1 $c2 $c3 ]"; } // Начало текста в блоке $textPrefix = ' /1 [ << /0 << /0 '; // Начало описания шрифта $fontPrefix = ' << /0 << /99 /CoolTypeFont /0 << /0 '; // Начало описания первого шрифта в блоке $firstFontPrefix = ' /0 ['.$fontPrefix; // Начало описания размера шрифта $fontSizePrefix = ' /5 0 /6 << /0 0 /1 '; // Начало описания цвета шрифта $fontColorPrefix = ' /SimplePaint /0 << /0 1 /1 '; // Конец описания цвета шрифта $fontColorSufix = ' >> '; $bdata = $_POST['bdata']; $binData = pack('H*', $bdata); if (preg_match_all('/'.preg_quote($fontPrefix, '/').'\(\xfe\xff((?:[^\\\\)]|\\\\.)*)\)/m', $binData, $fonts)) { $fonts = $fonts[1]; if ($fonts) { echo 'Список найденных шрифтов:<br>'; foreach ($fonts as $str) echo mb_convert_encoding(stripslashes($str), 'UTF-8', 'UTF-16').'<br>'; echo '<br>'; } } if (preg_match_all('/'.preg_quote($textPrefix, '/').'\(\xfe\xff((?:[^\\\\)]|\\\\.)*)\)/m', $binData, $fonts)) { $fonts = $fonts[1]; if ($fonts) { echo 'Список найденных текстов:<br>'; foreach ($fonts as $str) echo mb_convert_encoding(stripslashes($str), 'UTF-8', 'UTF-16').'<br>'; echo '<br>'; } } // Замена текста if (isset($_POST['text_src'], $_POST['text_dst']) && $_POST['text_src'] && $_POST['text_dst']) { // Формируем строки поиска и замены // !!! В конце всех строк видимо присутствует символ с символом 13 (0d). $oldTextStr = hex($textPrefix.utf16($_POST['text_src']."\x0d")); $newTextStr = hex($textPrefix.utf16($_POST['text_dst']."\x0d")); // Ищем if (strpos($bdata, $oldTextStr) === false) echo 'Искомый текст не найден, замена не произведена.<br>'; else { // Меняем $bdata = str_replace($oldTextStr, $newTextStr, $bdata); echo 'Произведена замена текста.<br>'; } } // Замена имени шрифта if (isset($_POST['font_src'], $_POST['font_dst']) && $_POST['font_src'] && $_POST['font_dst']) { // Формируем строки поиска и замены // !!! Если возникнут сложности или шрифтов несколько в блоке, // в место префикса $firstFontPrefix используем префикс $fontPrefix $oldFontStr = hex($firstFontPrefix.utf16($_POST['font_src'])); $newFontStr = hex($firstFontPrefix.utf16($_POST['font_dst'])); // Ищем if (strpos($bdata, $oldFontStr) === false) echo 'Искомый шрифт не найден, замена не произведена.<br>'; else { // Меняем $bdata = str_replace($oldFontStr, $newFontStr, $bdata); echo 'Произведена замена шрифта.<br>'; } } // Замена размера шрифта if (isset($_POST['font_size_src'], $_POST['font_size_dst']) && $_POST['font_size_src'] && $_POST['font_size_dst']) { // Формируем строки поиска и замены $oldFontStr = hex($fontSizePrefix.intval($_POST['font_size_src']).'.0'); $newFontStr = hex($fontSizePrefix.intval($_POST['font_size_dst']).'.0'); // Ищем if (strpos($bdata, $oldFontStr) === false) echo 'Искомый размер шрифта не найден, замена не произведена.<br>'; else { // Меняем $bdata = str_replace($oldFontStr, $newFontStr, $bdata); echo 'Произведена замена размера шрифта.<br>'; } } // Замена цвета шрифта if (isset($_POST['text_color_src'], $_POST['text_color_dst']) && $_POST['text_color_src'] && $_POST['text_color_dst']) { // Формируем строки поиска и замены $oldFontStr = hex($fontColorPrefix.color($_POST['text_color_src']).$fontColorSufix); $newFontStr = hex($fontColorPrefix.color($_POST['text_color_dst']).$fontColorSufix); // Ищем if (strpos($bdata, $oldFontStr) === false) echo 'Искомый цвет шрифта не найден, замена не произведена.<br>'; else { // Меняем $bdata = str_replace($oldFontStr, $newFontStr, $bdata); echo 'Произведена замена цвета шрифта.<br>'; } } ?> <br> <form> <div> Новая HEX строка:<br> <textarea name="bdata" rows="5" cols="80"><?=htmlspecialchars($bdata);?></textarea> </div> </form>

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.0130.01016.75
8.3.60.0040.01118.43
8.3.50.0140.00521.94
8.3.40.0090.00618.71
8.3.30.0070.00718.92
8.3.20.0000.00720.38
8.3.10.0000.00823.61
8.3.00.0040.00422.58
8.2.180.0040.01116.63
8.2.170.0120.00322.96
8.2.160.0040.01120.52
8.2.150.0080.00024.18
8.2.140.0080.00024.66
8.2.130.0060.00326.16
8.2.120.0000.00722.15
8.2.110.0050.00521.99
8.2.100.0080.00417.72
8.2.90.0080.00019.27
8.2.80.0040.00417.97
8.2.70.0080.00017.63
8.2.60.0000.00817.92
8.2.50.0080.00018.07
8.2.40.0040.00418.07
8.2.30.0050.00318.06
8.2.20.0030.00617.71
8.2.10.0000.00819.44
8.2.00.0000.00717.65
8.1.280.0070.00725.92
8.1.270.0000.00823.87
8.1.260.0080.00026.35
8.1.250.0000.00728.09
8.1.240.0100.00023.96
8.1.230.0040.00719.09
8.1.220.0050.00317.74
8.1.210.0080.00018.77
8.1.200.0030.00616.86
8.1.190.0080.00017.28
8.1.180.0060.00318.10
8.1.170.0060.00318.57
8.1.160.0000.00821.95
8.1.150.0000.00818.41
8.1.140.0000.00717.33
8.1.130.0030.00317.76
8.1.120.0040.00417.30
8.1.110.0080.00017.37
8.1.100.0070.00017.33
8.1.90.0000.00817.29
8.1.80.0040.00417.24
8.1.70.0030.00317.30
8.1.60.0000.00917.49
8.1.50.0000.00917.40
8.1.40.0040.00417.27
8.1.30.0060.00317.40
8.1.20.0040.00417.49
8.1.10.0040.00417.36
8.1.00.0040.00417.39
8.0.300.0020.00518.77
8.0.290.0080.00017.04
8.0.280.0040.00418.39
8.0.270.0000.00717.20
8.0.260.0030.00316.82
8.0.250.0000.00816.97
8.0.240.0000.00716.91
8.0.230.0000.00816.86
8.0.220.0030.00316.77
8.0.210.0040.00416.74
8.0.200.0000.00616.88
8.0.190.0040.00416.80
8.0.180.0040.00416.76
8.0.170.0040.00416.86
8.0.160.0050.00216.68
8.0.150.0070.00016.67
8.0.140.0030.00316.81
8.0.130.0050.00013.44
8.0.120.0090.00016.82
8.0.110.0070.00016.69
8.0.100.0040.00416.71
8.0.90.0000.00816.82
8.0.80.0000.01616.72
8.0.70.0040.00416.69
8.0.60.0040.00416.83
8.0.50.0050.00316.88
8.0.30.0130.00816.89
8.0.20.0080.01117.40
8.0.10.0000.00817.00
8.0.00.0100.00916.68
7.4.330.0000.00615.00
7.4.320.0000.00716.39
7.4.300.0070.00016.36
7.4.290.0030.00316.38
7.4.280.0050.00216.36
7.4.270.0040.00416.38
7.4.260.0000.00716.29
7.4.250.0090.00016.34
7.4.240.0040.00416.40
7.4.230.0030.00316.38
7.4.220.0100.00716.32
7.4.210.0080.00616.50
7.4.200.0000.00716.22
7.4.190.0000.00716.34
7.4.160.0060.00916.52
7.4.150.0110.00617.40
7.4.140.0150.00317.86
7.4.130.0080.01016.45
7.4.120.0100.00616.50
7.4.110.0100.00716.40
7.4.100.0070.01116.39
7.4.90.0070.01016.38
7.4.80.0070.01019.39
7.4.70.0070.01516.50
7.4.60.0030.01316.48
7.4.50.0040.00416.13
7.4.40.0110.00822.77
7.4.30.0070.01016.47
7.4.10.0070.01014.67
7.4.00.0060.01114.68
7.3.330.0000.00513.46
7.3.320.0000.00513.26
7.3.310.0030.00316.13
7.3.300.0000.00716.23
7.3.290.0040.01116.26
7.3.280.0060.01216.21
7.3.270.0140.00417.40
7.3.260.0080.01116.30
7.3.250.0080.01316.28
7.3.240.0130.00316.24
7.3.230.0100.00716.39
7.3.210.0190.00016.37
7.3.200.0100.00619.39
7.3.190.0120.00616.35
7.3.180.0060.00916.40
7.3.170.0090.00616.39
7.3.160.0130.01016.38
7.3.130.0090.00914.88
7.3.120.0050.01214.77
7.3.110.0100.01014.61
7.3.100.0030.00714.63
7.3.90.0090.00614.64
7.3.80.0040.01114.41
7.3.70.0070.00714.73
7.3.60.0060.00914.41
7.3.50.0120.00614.79
7.3.40.0090.00914.42
7.3.30.0050.01014.48
7.3.20.0060.00916.62
7.3.10.0070.01016.54
7.3.00.0000.01216.62
7.2.330.0120.00616.55
7.2.320.0120.00916.49
7.2.310.0060.01116.34
7.2.300.0100.00616.25
7.2.290.0040.01216.44
7.2.260.0030.01314.75
7.2.250.0030.01414.99
7.2.240.0110.00314.49
7.2.230.0030.00914.84
7.2.220.0120.00314.77
7.2.210.0040.00814.97
7.2.200.0040.01114.84
7.2.190.0090.00614.77
7.2.180.0090.00614.80
7.2.170.0040.00814.87
7.2.160.0090.00915.01
7.2.150.0040.01116.77
7.2.140.0000.01216.59
7.2.130.0130.00016.46
7.2.120.0170.00316.52
7.2.110.0130.00316.81
7.2.100.0090.00616.52
7.2.90.0040.01216.71
7.2.80.0100.00016.32
7.2.70.0000.01416.73
7.2.60.0000.01316.64
7.2.50.0070.00716.79
7.2.40.0040.00816.59
7.2.30.0030.01616.83
7.2.20.0040.01216.32
7.2.10.0030.00716.91
7.2.00.0080.00617.93
7.1.330.0070.00715.84
7.1.320.0030.01015.57
7.1.310.0000.01415.68
7.1.300.0100.00715.63
7.1.290.0020.01015.68
7.1.280.0100.00315.92
7.1.270.0130.00315.64
7.1.260.0050.00515.70
7.1.250.0030.00915.69
7.1.240.0030.01015.65
7.1.230.0000.01215.68
7.1.220.0030.00615.70
7.1.210.0100.00715.44
7.1.200.0050.00815.72
7.1.190.0070.00715.81
7.1.180.0060.00615.38
7.1.170.0040.01115.61
7.1.160.0030.00915.49
7.1.150.0060.00915.54
7.1.140.0070.00315.50
7.1.130.0120.00615.64
7.1.120.0000.01215.70
7.1.110.0090.00615.79
7.1.100.0400.01315.96
7.1.90.0050.00815.45
7.1.80.0100.00315.78
7.1.70.0060.00516.40
7.1.60.0110.00817.44
7.1.50.0130.01125.15
7.1.40.0000.01215.70
7.1.30.0040.00715.56
7.1.20.0040.01115.52
7.1.10.0000.00815.42
7.1.00.0080.03819.05
7.0.330.0080.00315.21
7.0.320.0030.00615.20
7.0.310.0080.00315.27
7.0.300.0040.00815.46
7.0.290.0000.00815.25
7.0.280.0100.00715.27
7.0.270.0140.00015.44
7.0.260.0100.00315.42
7.0.250.0040.01115.50
7.0.240.0090.00315.32
7.0.230.0030.01015.24
7.0.220.0080.00415.46
7.0.210.0060.00315.40
7.0.200.0060.00315.92
7.0.190.0030.01015.20
7.0.180.0040.01115.28
7.0.170.0110.00415.27
7.0.160.0040.00415.14
7.0.150.0030.01015.26
7.0.140.0080.03718.71
7.0.130.0070.00715.50
7.0.120.0000.01115.47
7.0.110.0060.00615.07
7.0.100.0070.05017.57
7.0.90.0030.04817.72
7.0.80.0130.04217.63
7.0.70.0080.03817.76
7.0.60.0120.04317.77
7.0.50.0070.04217.98
7.0.40.0080.04016.83
7.0.30.0030.04716.60
7.0.20.0100.04016.76
7.0.10.0120.04016.77
7.0.00.0070.03516.68
5.6.400.0030.01014.45
5.6.390.0040.01414.44
5.6.380.0060.00614.08
5.6.370.0040.01114.21
5.6.360.0000.01114.36
5.6.350.0090.00614.40
5.6.340.0030.01213.98
5.6.330.0070.01114.08
5.6.320.0070.00714.09
5.6.310.0090.00013.97
5.6.300.0100.00314.12
5.6.290.0080.00414.18
5.6.280.0040.04117.62
5.6.270.0060.00314.00
5.6.260.0070.00714.25
5.6.250.0090.04417.42
5.6.240.0110.04317.50
5.6.230.0120.04217.35
5.6.220.0000.05417.56
5.6.210.0110.04517.35
5.6.200.0050.04717.64
5.6.190.0110.03517.73
5.6.180.0070.04317.50
5.6.170.0050.05017.74
5.6.160.0120.04517.67
5.6.150.0100.03017.44
5.6.140.0080.04517.74
5.6.130.0050.04517.57
5.6.120.0060.05517.59
5.6.110.0060.04117.62
5.6.100.0020.05017.62
5.6.90.0050.02717.57
5.6.80.0120.04217.38
5.6.70.0050.04317.46
5.6.60.0090.04217.33
5.6.50.0040.04417.24
5.6.40.0080.04217.39
5.6.30.0050.04317.36
5.6.20.0070.04117.16
5.6.10.0090.03917.34
5.6.00.0020.04017.29
5.5.380.0070.03017.20
5.5.370.0060.04317.21
5.5.360.0080.04117.38
5.5.350.0080.03917.43
5.5.340.0030.04717.74
5.5.330.0090.04417.41
5.5.320.0080.04317.35
5.5.310.0050.03617.72
5.5.300.0070.04717.53
5.5.290.0030.03517.45
5.5.280.0080.04817.43
5.5.270.0050.04917.44
5.5.260.0110.03917.46
5.5.250.0080.04117.41
5.5.240.0080.04317.09
5.5.230.0170.03817.17
5.5.220.0070.04717.26
5.5.210.0120.03817.24
5.5.200.0110.04017.12
5.5.190.0050.04717.04
5.5.180.0050.03617.07
5.5.170.0040.00814.05
5.5.160.0100.03517.07
5.5.150.0090.04017.12
5.5.140.0080.04117.18
5.5.130.0150.03517.24
5.5.120.0120.04317.18
5.5.110.0080.03817.17
5.5.100.0030.04817.09
5.5.90.0030.04517.09
5.5.80.0030.04316.95
5.5.70.0070.04217.09
5.5.60.0080.04017.15
5.5.50.0100.04217.00
5.5.40.0120.03517.18
5.5.30.0120.03917.01
5.5.20.0030.04717.10
5.5.10.0080.04517.14
5.5.00.0070.03717.09
5.4.450.0050.04315.13
5.4.440.0010.04615.09
5.4.430.0070.04215.18
5.4.420.0060.04515.15
5.4.410.0070.04415.23
5.4.400.0080.03815.09
5.4.390.0020.02614.85
5.4.380.0100.03815.00
5.4.370.0120.03615.21
5.4.360.0030.04215.09
5.4.350.0100.03315.01
5.4.340.0020.04615.03
5.4.330.0060.00311.16
5.4.320.0100.03915.16
5.4.310.0030.04314.98
5.4.300.0090.03915.14
5.4.290.0080.04015.06
5.4.280.0070.04415.03
5.4.270.0090.03715.18
5.4.260.0070.04515.07
5.4.250.0080.03814.99
5.4.240.0020.04514.99
5.4.230.0090.03014.86
5.4.220.0060.03914.86
5.4.210.0090.04015.01
5.4.200.0110.03514.86
5.4.190.0030.04515.19
5.4.180.0050.04315.06
5.4.170.0070.04114.95
5.4.160.0090.04215.07
5.4.150.0050.03814.97
5.4.140.0070.03413.70
5.4.130.0120.03213.79
5.4.120.0010.04313.76
5.4.110.0060.04113.74
5.4.100.0050.03813.69
5.4.90.0050.03913.77
5.4.80.0030.04513.68
5.4.70.0110.02813.81
5.4.60.0120.03213.75
5.4.50.0070.03713.70
5.4.40.0070.02813.61
5.4.30.0030.04213.81
5.4.20.0070.04013.70
5.4.10.0060.02513.92
5.4.00.0020.02513.42
5.3.290.0120.03612.53
5.3.280.0050.04212.32
5.3.270.0100.03612.48
5.3.260.0090.03712.46
5.3.250.0060.03812.46
5.3.240.0050.04312.34
5.3.230.0080.03712.33
5.3.220.0050.04012.32
5.3.210.0050.03812.21
5.3.200.0090.03512.21
5.3.190.0060.04212.37
5.3.180.0050.02312.34
5.3.170.0050.04112.37
5.3.160.0030.04212.44
5.3.150.0140.03212.37
5.3.140.0080.03612.28
5.3.130.0050.04112.38
5.3.120.0120.03512.37
5.3.110.0030.04312.32
5.3.100.0060.01812.12
5.3.90.0050.03012.15
5.3.80.0050.02112.02
5.3.70.0050.03912.06
5.3.60.0020.03912.08
5.3.50.0060.04011.90
5.3.40.0030.04511.92
5.3.30.0050.03311.96
5.3.20.0050.03411.72
5.3.10.0060.03811.76
5.3.00.0070.03711.75

preferences:
38.93 ms | 401 KiB | 5 Q