3v4l.org

run code in 300+ PHP versions simultaneously
<?php declare(strict_types=1); static $text1 = ' Пароль: 0936 Спишется 1241р. Перевод на счет 410012124208089 '; static $text2 = ' Пароль: 3042 Спишется 1240,21р. Перевод на счет 410012124208089 '; static $text3 = ' Пароль: 3042 Спишется 1240,21 руб Перевод на счет 410012124208089 '; function parse(string $text): array { $count = preg_match_all(/** @lang RegExp */ '/ (?: # самое простое — кошелёк получателя. Считаем, что он 15 символов (?<address>\d{15}) # дальше самое сложное — сумма перевода. Может быть целым или с разделителем копеек, в этом и сложность # так как может быть целым, то нам нужно её отличить от кода подтверждения |(?: (?<sum> \d+ (?:[,.]{1}\d+|) ) # будем считать, что после суммы будет написана валюта. Иначе не угадать что — код, а что — сумма. # допустим, что может быть слитно или через пробелы # допустим, что по-английски или по-русски, с маленькой или с большой буквы (?i:\s*[рr]) ) # дальше опять просто — код подтверждения. Просто целое число |(?<code>\d+) ) /x', $text, $matches, PREG_SET_ORDER); var_dump($matches); die; if ($count !== 3) { throw new RuntimeException('Всё пропало, нужно писать новую регулярку'); } $sum = 0; $code = 0; $address = 0; for ($i = 0; $i < 3; $i++) { [$tempSum, $tempCode, $tempAddress] = [$matches['sum'][$i], $matches['code'][$i], $matches['address'][$i]]; if ($tempSum) { $sum = $tempSum; } if ($tempCode) { $code = $tempCode; } if ($tempAddress) { $address = $tempAddress; } } return compact('code', 'sum', 'address'); } echo $text1 . PHP_EOL; $result = parse($text1); var_dump($result); echo $text2 . PHP_EOL; $result = parse($text2); var_dump($result); echo $text3 . PHP_EOL; $result = parse($text3); var_dump($result);

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.0070.00718.64
8.3.50.0090.00618.33
8.3.40.0130.00619.07
8.3.30.0090.00618.91
8.3.20.0040.00418.99
8.3.10.0040.00419.16
8.3.00.0080.00023.48
8.2.180.0120.00318.57
8.2.170.0040.01122.96
8.2.160.0040.01119.38
8.2.150.0050.00324.18
8.2.140.0000.00824.66
8.2.130.0120.00319.95
8.2.120.0040.00426.35
8.2.110.0050.00520.88
8.2.100.0050.00518.03
8.2.90.0060.00318.00
8.2.80.0050.00319.04
8.2.70.0000.00917.77
8.2.60.0000.00818.03
8.2.50.0000.00818.10
8.2.40.0000.00819.47
8.2.30.0070.00019.42
8.2.20.0000.00818.16
8.2.10.0000.00718.21
8.2.00.0050.00219.44
8.1.280.0150.00025.92
8.1.270.0080.00022.01
8.1.260.0000.00826.35
8.1.250.0000.00928.09
8.1.240.0030.00622.66
8.1.230.0040.00822.11
8.1.220.0060.00317.74
8.1.210.0030.00618.77
8.1.200.0040.00417.60
8.1.190.0030.00517.38
8.1.180.0040.00418.10
8.1.170.0040.00418.66
8.1.160.0030.00619.03
8.1.150.0000.00718.99
8.1.140.0000.00817.85
8.1.130.0040.00419.02
8.1.120.0080.00017.66
8.1.110.0080.00017.66
8.1.100.0070.00317.47
8.1.90.0080.00017.57
8.1.80.0050.00217.52
8.1.70.0040.00417.59
8.1.60.0080.00017.59
8.1.50.0030.00617.59
8.1.40.0090.00017.73
8.1.30.0060.00317.82
8.1.20.0000.00817.88
8.1.10.0030.00517.59
8.1.00.0060.00317.65
8.0.300.0030.00618.77
8.0.290.0040.00416.75
8.0.280.0040.00318.39
8.0.270.0040.00417.30
8.0.260.0040.00417.34
8.0.250.0000.00717.09
8.0.240.0030.00617.10
8.0.230.0030.00617.16
8.0.220.0000.00717.07
8.0.210.0070.00017.00
8.0.200.0070.00017.21
8.0.190.0000.00817.20
8.0.180.0000.00717.03
8.0.170.0060.00317.05
8.0.160.0040.00417.10
8.0.150.0070.00317.11
8.0.140.0000.00717.14
8.0.130.0000.00513.52
8.0.120.0040.00417.05
8.0.110.0060.00317.18
8.0.100.0040.00417.03
8.0.90.0070.00017.28
8.0.80.0080.00817.16
8.0.70.0070.00017.14
8.0.60.0020.00516.98
8.0.50.0040.00417.20
8.0.30.0110.00917.24
8.0.20.0210.01617.45
8.0.10.0070.00017.34
8.0.00.0160.00717.08
7.4.330.0030.00315.55
7.4.320.0060.00016.72
7.4.300.0030.00316.86
7.4.290.0070.00016.86
7.4.280.0030.00316.89
7.4.270.0000.00816.91
7.4.260.0000.00716.70
7.4.250.0000.00816.84
7.4.240.0000.00716.91
7.4.230.0040.00416.71
7.4.220.0050.00216.59
7.4.210.0060.01116.86
7.4.200.0040.00416.72
7.4.160.0100.00616.85
7.4.140.0140.00817.86
7.4.130.0150.00316.87
7.4.120.0110.01016.85
7.4.110.0090.00916.78
7.4.100.0060.01116.84
7.4.90.0090.00916.79
7.4.80.0110.01119.39
7.4.70.0090.02116.65
7.4.60.0100.00716.67
7.4.50.0100.00316.67
7.4.40.0100.01316.50
7.4.10.0000.01815.06
7.4.00.0120.00314.97
7.3.330.0000.00513.47
7.3.320.0060.00013.51
7.3.310.0030.00316.56
7.3.300.0000.00716.53
7.3.290.0070.00016.52
7.3.280.0090.00816.54
7.3.260.0150.00816.71
7.3.240.0130.01016.58
7.3.230.0120.00616.69
7.3.210.0130.00516.64
7.3.200.0170.00016.60
7.3.190.0100.01316.60
7.3.180.0100.00716.47
7.3.170.0100.00716.60
7.3.160.0090.00816.69
7.3.130.0070.01315.04
7.3.120.0130.00614.77
7.3.110.0160.00314.86
7.3.100.0040.00815.11
7.3.90.0100.00315.13
7.3.80.0070.00715.22
7.3.70.0060.00915.00
7.3.60.0080.00315.20
7.3.50.0070.01115.08
7.3.40.0030.00915.09
7.3.30.0060.00915.07
7.3.20.0000.01116.96
7.3.10.0070.00716.47
7.3.00.0030.00716.55
7.2.330.0160.00916.96
7.2.320.0090.00916.95
7.2.310.0030.01716.87
7.2.300.0120.00616.87
7.2.290.0150.00316.84
7.2.260.0110.00715.36
7.2.250.0080.01115.12
7.2.240.0130.00315.17
7.2.230.0130.00315.07
7.2.220.0110.00415.25
7.2.210.0070.00715.36
7.2.200.0030.01315.33
7.2.190.0110.00715.28
7.2.180.0060.00815.29
7.2.170.0030.00615.20
7.2.160.0090.00615.07
7.2.150.0060.00616.93
7.2.140.0160.00017.13
7.2.130.0030.01017.21
7.2.120.0050.00517.21
7.2.110.0000.00917.06
7.2.100.0000.00916.94
7.2.90.0080.00816.95
7.2.80.0060.00317.07
7.2.70.0030.00717.10
7.2.60.0030.00917.23
7.2.50.0000.01517.20
7.2.40.0060.00917.13
7.2.30.0060.00617.20
7.2.20.0000.01517.24
7.2.10.0110.00716.98
7.2.00.0070.00717.16
7.1.330.0030.01015.58
7.1.320.0060.01315.61
7.1.310.0070.00715.79
7.1.300.0040.01215.83
7.1.290.0000.01215.75
7.1.280.0110.00015.58
7.1.270.0030.01015.84
7.1.260.0040.00816.04
7.1.250.0060.00315.56
7.1.240.0100.00316.09
7.1.230.0040.01116.07
7.1.220.0000.01515.88
7.1.210.0070.00715.94
7.1.200.0030.01015.79
7.1.190.0130.00015.76
7.1.180.0030.01216.12
7.1.170.0000.01515.90
7.1.160.0000.01315.89
7.1.150.0090.00615.82
7.1.140.0070.00715.77
7.1.130.0030.00715.94
7.1.120.0000.01415.90
7.1.110.0050.00816.05
7.1.100.0060.00616.06
7.1.90.0000.01115.96
7.1.80.0070.00716.05
7.1.70.0120.00315.99
7.1.60.0030.00615.64
7.1.50.0000.01315.93
7.1.40.0070.00416.01
7.1.30.0100.00616.01
7.1.20.0030.00915.67
7.1.10.0060.01215.91
7.1.00.0040.01115.95
7.0.330.0060.00315.41
7.0.320.0060.00315.10
7.0.310.0030.01015.30
7.0.300.0110.00415.38
7.0.290.0090.00615.05
7.0.280.0040.00415.28
7.0.270.0040.01115.15
7.0.260.0000.01215.20
7.0.250.0030.00715.26
7.0.240.0030.00615.39
7.0.230.0110.00315.18
7.0.220.0040.00715.27
7.0.210.0000.01415.25
7.0.200.0030.00915.45
7.0.190.0080.00415.49
7.0.180.0000.01115.10
7.0.170.0030.01215.50
7.0.160.0070.00715.14
7.0.150.0110.00715.09
7.0.140.0090.00915.25
7.0.130.0110.00415.16
7.0.120.0030.01015.36
7.0.110.0120.00315.16
7.0.100.0060.00915.29
7.0.90.0070.00715.24
7.0.80.0070.00715.33
7.0.70.0000.01715.36
7.0.60.0070.00715.33
7.0.50.0050.00515.16
7.0.40.0060.00313.29
7.0.30.0090.00313.35
7.0.20.0030.00913.32
7.0.10.0090.00613.39
7.0.00.0070.00713.43
5.6.400.0030.01014.16
5.6.390.0040.00713.83
5.6.380.0130.00014.36
5.6.370.0030.00514.31
5.6.360.0030.00614.02
5.6.350.0030.00514.09
5.6.340.0040.01214.00
5.6.330.0000.00914.08
5.6.320.0000.01714.09
5.6.310.0070.00714.34
5.6.300.0090.00914.36
5.6.290.0080.00314.30
5.6.280.0090.00314.38
5.6.270.0080.00814.25
5.6.260.0030.01014.07
5.6.250.0060.00314.21
5.6.240.0060.00914.23
5.6.230.0040.01214.14
5.6.220.0060.01014.14
5.6.210.0000.01514.11
5.6.200.0060.00614.16
5.6.190.0060.00614.19
5.6.180.0060.00614.16
5.6.170.0130.00714.01
5.6.160.0060.01214.25
5.6.150.0040.01514.36
5.6.140.0030.01414.05
5.6.130.0070.00714.26
5.6.120.0040.01114.00
5.6.110.0040.01113.86
5.6.100.0120.00314.09
5.6.90.0100.00614.23
5.6.80.0090.00913.82
5.6.70.0060.00913.93
5.6.60.0090.00914.01
5.6.50.0090.00614.01
5.6.40.0070.00714.22
5.6.30.0000.01114.15
5.6.20.0030.01013.86
5.6.10.0080.00014.00
5.6.00.0040.01114.06

preferences:
52.7 ms | 400 KiB | 5 Q