3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * * PHP Version 5.5 * Classe de controle e contagem de palavras. * * @author Felipe Francisco <felipefrancisco@outlook.com> * @example Exemplo da estrutura JSON utilizada nessa classe: * * { * [0] => ( * ['palavras'] => ( * ['palavra_1'] => 5, * ['palavra_2'] => 8, * ['palavra_3'] => 1 * ), * ['total'] = '14' * ), * [1] => ( * ['palavras'] => ( * ['palavra_3'] => 3, * ['palavra_4'] => 6, * ['palavra_5'] => 10 * ), * ['total'] = '19' * ), * ['total_de_palavras'] => '33' * } */ namespace JSON; class Texto { /** * Vetor com todos os textos recebidos. * @var string[] */ private $textos = []; /** * Estrutura que será transformado em JSON. * @var string[] */ private $retorno = []; /** * Total de Palavras encontradas nos textos. * @var integer */ private static $totalPalavras; /** * Recebe a variável com o texto ou o conjunto de textos * e inicia o processo para contar e separar as palavras. * * @param string/string[] $textos (Texto ou vetor de textos) */ public function __construct($textos = null) { # Recebe automaticamente a variável caso ela não seja passada pelo argumento. if(!$textos) $textos = $_POST['textos']; # Verifica se o texto que está sendo fornecido é um texto válido. if(is_null($textos) || empty($textos)) throw new Exception("Por favor, insira um texto com conteúdo"); # Caso o argumento recebido não seja um conjunto de textos, transforme-o em um conjunto. if(!is_array($textos)) $this->textos[] = $texto; # Para cada texto do conjunto, adicioná-lo ao vetor de textos. foreach($textos as $t) $this->adicionaTexto($t); } /** * Adiciona um texto ao conjunto de textos retirando * as possíveis tags HTML que possam existir. * * @param string $texto (um texto qualquer) * @return void */ public function adicionaTexto($texto) { # Retira a pontuação do texto. $texto = preg_replace('/[\p{P}]/', "", $texto); # Retirando qualquer tag HTML por precaução. $this->textos[] = strtolower(strip_tags($texto)); } /** * Separa as palavras do texto e efetua a contagem delas * para adquirir um número total de textos e palavras. * * @param integer $i [description] * */ private function separaPalavras($i = 0) { $texto = $this->textos[$i]; # Caso não existam mais textos a serem tratados, encerrar a recursão. if(!$texto) return; # Separa as palavras no texto. $palavras = explode(' ', $texto); # Iteração entre as palavras encontradas. foreach($palavras as $p) { $this->retorno[$i]['palavras'][$p]++; $this->retorno[$i]['total']++; self::$totalPalavras++; } # Chama a função novamente para verificar se ainda existem textos. $this->separaPalavras(++$i); } /** * Gera o JSON das informações que estão na classe. * @return string (textos em JSON na estrutura pré-definida) */ public function gerarJSON() { # Reseta a contagem de palavras; unset(self::$totalPalavras); # Separa as palavras. $this->separaPalavras(); # Criando o JSON. $json = $this->retorno; $json['total_de_palavras'] = $this->totalPalavras; return json_encode($json); } } $textos = ['meu nome é joão', 'meu nome é Maria']; $oTexto = new Texto($textos); $oTexto->adicionaTexto('olá, eu sou felipe!'); echo $oTexto->gerarJSON;

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.00619.13
8.3.30.0150.00619.21
8.3.20.0080.00020.16
8.3.10.0040.00421.97
8.3.00.0040.00422.34
8.2.170.0100.00722.96
8.2.160.0100.00319.16
8.2.150.0000.00824.18
8.2.140.0030.00524.66
8.2.130.0040.00426.16
8.2.120.0080.00019.79
8.2.110.0090.00020.38
8.2.100.0000.01118.16
8.2.90.0050.00319.28
8.2.80.0040.00417.97
8.2.70.0080.00017.88
8.2.60.0040.00418.03
8.2.50.0000.00818.07
8.2.40.0000.00820.03
8.2.30.0040.00718.23
8.2.20.0020.00718.00
8.2.10.0000.00818.02
8.2.00.0000.00817.98
8.1.270.0110.00718.95
8.1.260.0000.00826.35
8.1.250.0040.00428.09
8.1.240.0040.00723.86
8.1.230.0050.00522.25
8.1.220.0000.00817.79
8.1.210.0050.00318.77
8.1.200.0040.00817.60
8.1.190.0080.00017.66
8.1.180.0060.00318.99
8.1.170.0030.00818.76
8.1.160.0030.00322.09
8.1.150.0000.00718.88
8.1.140.0080.00017.68
8.1.130.0000.00717.93
8.1.120.0000.00717.66
8.1.110.0080.00017.49
8.1.100.0040.00417.64
8.1.90.0030.00717.66
8.1.80.0000.00717.53
8.1.70.0030.00317.62
8.1.60.0040.00417.68
8.1.50.0060.00317.60
8.1.40.0040.00417.59
8.1.30.0040.00417.82
8.1.20.0000.00817.79
8.1.10.0050.00217.69
8.1.00.0050.00317.57
8.0.300.0040.00418.77
8.0.290.0000.00717.18
8.0.280.0040.00418.42
8.0.270.0000.00817.19
8.0.260.0030.00517.06
8.0.250.0030.00317.20
8.0.240.0060.00317.13
8.0.230.0040.00417.18
8.0.220.0000.00717.07
8.0.210.0070.00017.22
8.0.200.0030.00317.21
8.0.190.0030.00717.15
8.0.180.0060.00317.11
8.0.170.0040.00417.13
8.0.160.0030.00617.14
8.0.150.0040.00417.12
8.0.140.0070.00017.05
8.0.130.0030.00313.60
8.0.120.0030.00517.22
8.0.110.0030.00517.13
8.0.100.0080.00017.22
8.0.90.0000.00817.28
8.0.80.0040.01117.18
8.0.70.0000.00817.18
8.0.60.0040.00417.30
8.0.50.0000.00817.26
8.0.30.0100.01117.42
8.0.20.0090.00917.44
8.0.10.0020.00517.11
8.0.00.0090.00917.06
7.4.330.0050.00015.00
7.4.320.0030.00316.89
7.4.300.0030.00316.79
7.4.290.0070.00016.73
7.4.280.0030.00316.88
7.4.270.0000.00716.80
7.4.260.0070.00016.90
7.4.250.0020.00516.83
7.4.240.0020.00516.81
7.4.230.0000.00716.88
7.4.220.0090.00916.84
7.4.210.0100.00716.95
7.4.200.0070.00016.90
7.4.190.0000.00717.00
7.4.160.0100.01016.88
7.4.150.0030.01517.40
7.4.140.0100.00817.86
7.4.130.0050.01216.81
7.4.120.0100.00716.84
7.4.110.0070.01316.63
7.4.100.0070.01016.82
7.4.90.0060.01216.72
7.4.80.0070.01419.39
7.4.70.0140.00416.89
7.4.60.0080.00816.71
7.4.50.0000.00816.55
7.4.40.0040.01522.77
7.4.30.0100.00716.81
7.4.10.0070.01015.11
7.4.00.0050.00915.31
7.3.330.0000.00613.62
7.3.320.0050.00013.59
7.3.310.0040.00416.66
7.3.300.0000.00716.62
7.3.290.0090.01216.62
7.3.280.0080.01116.58
7.3.270.0030.01417.40
7.3.260.0090.00916.64
7.3.250.0120.00816.84
7.3.240.0060.01216.88
7.3.230.0190.00616.63
7.3.210.0110.00816.92
7.3.200.0140.00719.39
7.3.190.0150.00616.79
7.3.180.0090.00616.74
7.3.170.0070.00716.70
7.3.160.0130.00316.61
7.3.130.0100.00715.19
7.3.120.0090.00715.22
7.3.110.0030.01415.20
7.3.100.0000.01415.24
7.3.90.0040.01115.04
7.3.80.0140.00315.11
7.3.70.0000.01215.11
7.3.60.0060.00615.09
7.3.50.0120.00615.18
7.3.40.0060.00315.10
7.3.30.0040.01214.87
7.3.20.0060.00317.11
7.3.10.0060.00916.90
7.3.00.0100.00316.95
7.2.330.0060.01316.91
7.2.320.0120.00616.84
7.2.310.0060.01616.96
7.2.300.0100.00716.93
7.2.290.0100.00617.00
7.2.260.0000.01915.39
7.2.250.0170.00315.36
7.2.240.0070.00715.09
7.2.230.0050.00515.25
7.2.220.0060.01315.50
7.2.210.0110.00815.41
7.2.200.0110.00315.17
7.2.190.0060.00915.12
7.2.180.0000.01015.29
7.2.170.0000.01115.18
7.2.160.0030.00915.24
7.2.150.0080.00617.09
7.2.140.0040.01117.18
7.2.130.0110.00317.16
7.2.120.0060.00917.25
7.2.110.0000.01917.19
7.2.100.0070.00817.06
7.2.90.0000.01416.94
7.2.80.0110.00117.00
7.2.70.0100.00716.80
7.2.60.0030.01017.14
7.2.50.0030.00917.07
7.2.40.0120.00317.20
7.2.30.0070.01117.10
7.2.20.0070.01017.31
7.2.10.0060.00317.18
7.2.00.0080.00718.11
7.1.330.0060.00615.86
7.1.320.0000.01716.09
7.1.310.0040.00715.81
7.1.300.0120.00316.14
7.1.290.0060.00615.76
7.1.280.0000.01115.95
7.1.270.0090.00616.10
7.1.260.0070.00715.82
7.1.250.0030.00615.99
7.1.240.0030.00915.54
7.1.230.0100.01015.90
7.1.220.0070.01016.13
7.1.210.0060.00315.92
7.1.200.0050.00916.04
7.1.190.0060.00616.03
7.1.180.0070.00715.96
7.1.170.0100.00315.74
7.1.160.0120.00315.64
7.1.150.0040.01116.05
7.1.140.0030.01016.02
7.1.130.0040.01116.16
7.1.120.0110.00415.66
7.1.110.0060.00616.15
7.1.100.0090.00817.23
7.1.90.0030.00716.04
7.1.80.0060.00615.94
7.1.70.0020.00816.61
7.1.60.0060.01217.95
7.1.50.0070.01116.70
7.1.40.0040.00815.79
7.1.30.0030.00916.05
7.1.20.0060.00815.93
7.1.10.0060.00916.06
7.1.00.0080.03519.31
7.0.330.0000.01115.30
7.0.320.0030.01315.53
7.0.310.0030.01415.64
7.0.300.0030.01215.38
7.0.290.0090.00915.59
7.0.280.0060.00815.45
7.0.270.0030.01015.49
7.0.260.0040.00715.50
7.0.250.0030.00915.67
7.0.240.0060.01015.81
7.0.230.0070.00415.70
7.0.220.0030.01215.57
7.0.210.0070.00615.61
7.0.200.0020.01116.13
7.0.190.0050.00315.71
7.0.180.0030.01015.78
7.0.170.0000.01415.50
7.0.160.0030.01015.70
7.0.150.0130.00015.36
7.0.140.0080.03518.85
7.0.130.0000.01615.64
7.0.120.0070.01015.61
7.0.110.0040.01115.59
7.0.100.0020.03017.81
7.0.90.0180.03017.84
7.0.80.0060.02517.73
7.0.70.0050.04417.76
7.0.60.0030.04417.76
7.0.50.0080.03217.96
7.0.40.0070.03416.91
7.0.30.0080.04416.79
7.0.20.0050.04016.71
7.0.10.0020.04416.78
7.0.00.0120.04216.78
5.6.400.0000.01114.23
5.6.390.0000.00814.94
5.6.380.0060.01314.93
5.6.370.0130.00614.75
5.6.360.0030.01014.73
5.6.350.0140.00014.75
5.6.340.0040.00714.43
5.6.330.0030.01314.54
5.6.320.0000.00914.84
5.6.310.0060.00614.62
5.6.300.0030.00814.72
5.6.290.0090.00014.93
5.6.280.0060.00614.48
5.6.270.0060.00914.44
5.6.260.0070.00714.58
5.6.250.0060.03517.66
5.6.240.0050.04417.54
5.6.230.0080.03117.65
5.6.220.0090.03717.45
5.6.210.0150.03817.54
5.6.200.0110.04117.82
5.6.190.0050.04017.96
5.6.180.0090.04117.62
5.6.170.0100.03117.82
5.6.160.0100.03917.74
5.6.150.0030.02717.79
5.6.140.0070.04017.80
5.6.130.0100.04017.85
5.6.120.0090.02017.73
5.6.110.0030.04917.69
5.6.100.0050.04717.79
5.6.90.0030.04517.98
5.6.80.0070.02217.39
5.6.70.0020.04417.47
5.6.60.0060.04517.30
5.6.50.0030.04317.43
5.6.40.0080.04117.49
5.6.30.0050.04317.43
5.6.20.0080.04517.49
5.6.10.0070.04117.56
5.6.00.0020.04117.46
5.5.380.0100.04217.37
5.5.370.0100.03617.48
5.5.360.0030.04917.45
5.5.350.0030.03317.37
5.5.340.0050.04517.61
5.5.330.0030.04017.79
5.5.320.0070.04517.71
5.5.310.0110.02317.58
5.5.300.0070.04517.83
5.5.290.0080.02517.68
5.5.280.0070.04517.61
5.5.270.0050.02517.78
5.5.260.0050.04617.67
5.5.250.0060.04117.44
5.5.240.0020.05017.33
5.5.230.0030.03817.20
5.5.220.0020.04417.38
5.5.210.0070.04017.21
5.5.200.0080.04017.28
5.5.190.0070.04317.25
5.5.180.0110.02817.41
5.5.170.0070.00714.65
5.5.160.0020.04717.14
5.5.150.0020.04317.22
5.5.140.0050.04617.19
5.5.130.0100.04217.30
5.5.120.0080.04317.38
5.5.110.0100.02517.35
5.5.100.0050.03317.11
5.5.90.0030.04317.12
5.5.80.0070.04317.33
5.5.70.0110.03817.23
5.5.60.0020.04817.09
5.5.50.0100.03417.30
5.5.40.0080.04017.32
5.5.30.0020.04717.18
5.5.20.0050.02817.29
5.5.10.0070.03917.06
5.5.00.0090.04017.10
5.4.450.0120.02215.24
5.4.440.0050.03715.32
5.4.430.0040.04215.36
5.4.420.0080.03715.22
5.4.410.0090.03615.39
5.4.400.0040.04415.20
5.4.390.0000.02315.15
5.4.380.0070.03115.32
5.4.370.0060.03815.03
5.4.360.0020.02515.04
5.4.350.0020.03314.87
5.4.340.0070.03915.23
5.4.330.0040.00711.27
5.4.320.0070.04215.07
5.4.310.0050.04014.96
5.4.300.0050.02814.99
5.4.290.0090.03715.18
5.4.280.0050.03015.08
5.4.270.0000.04715.07
5.4.260.0110.03615.07
5.4.250.0080.03215.13
5.4.240.0020.03015.21
5.4.230.0100.03115.08
5.4.220.0030.03715.27
5.4.210.0030.04314.94
5.4.200.0030.04215.15
5.4.190.0090.03515.17
5.4.180.0030.04315.00
5.4.170.0070.04015.06
5.4.160.0070.04014.95
5.4.150.0120.03315.04
5.4.140.0030.04013.76
5.4.130.0070.03313.72
5.4.120.0050.03013.84
5.4.110.0080.02313.66
5.4.100.0080.02713.92
5.4.90.0030.04013.94
5.4.80.0070.03513.89
5.4.70.0070.03513.70
5.4.60.0030.02613.91
5.4.50.0020.04013.79
5.4.40.0070.04013.76
5.4.30.0110.01913.68
5.4.20.0070.03813.89
5.4.10.0070.03813.89
5.4.00.0110.03513.54
5.3.290.0080.03812.74
5.3.280.0050.04112.62
5.3.270.0070.03812.61
5.3.260.0070.02712.67
5.3.250.0070.03312.66
5.3.240.0020.02912.61
5.3.230.0000.04112.64
5.3.220.0030.02712.60
5.3.210.0110.03312.63
5.3.200.0080.02812.65
5.3.190.0000.04412.63
5.3.180.0050.03912.57
5.3.170.0070.03812.67
5.3.160.0050.02312.59
5.3.150.0030.03812.58
5.3.140.0070.02212.66
5.3.130.0070.03712.63
5.3.120.0040.02312.64
5.3.110.0100.03012.62
5.3.100.0050.04012.36
5.3.90.0080.03112.37
5.3.80.0040.03712.38
5.3.70.0020.04412.37
5.3.60.0050.02312.30
5.3.50.0030.03512.34
5.3.40.0000.03012.38
5.3.30.0050.03212.29
5.3.20.0030.04212.19
5.3.10.0030.02812.13
5.3.00.0050.02312.17
5.2.170.0100.05712.04
5.2.160.0030.03712.04
5.2.150.0000.03312.04
5.2.140.0170.05012.04
5.2.130.0070.03012.04
5.2.120.0070.02712.04
5.2.110.0000.05012.04
5.2.100.0030.06012.04
5.2.90.0000.05312.04
5.2.80.0100.02712.04
5.2.70.0100.06012.04
5.2.60.0030.06012.04
5.2.50.0070.03712.04
5.2.40.0070.06012.04
5.2.30.0030.06312.04
5.2.20.0030.03312.04
5.2.10.0000.03312.04
5.2.00.0130.05012.04
5.1.60.0070.05012.04
5.1.50.0000.05012.04
5.1.40.0070.02712.04
5.1.30.0000.05712.04
5.1.20.0030.05012.04
5.1.10.0070.04012.04
5.1.00.0030.03012.04
5.0.50.0000.04712.04
5.0.40.0030.04012.04
5.0.30.0000.06712.04
5.0.20.0030.04312.04
5.0.10.0000.03012.04
5.0.00.0030.06312.04
4.4.90.0070.03012.04
4.4.80.0030.03312.04
4.4.70.0030.03312.04
4.4.60.0000.04012.04
4.4.50.0000.03312.04
4.4.40.0030.02712.04
4.4.30.0000.02012.04
4.4.20.0030.02312.04
4.4.10.0000.02012.04
4.4.00.0030.02712.04
4.3.110.0070.02312.04
4.3.100.0000.01712.04
4.3.90.0030.03312.04
4.3.80.0070.02012.04
4.3.70.0000.03012.04
4.3.60.0030.03012.04
4.3.50.0000.03712.04
4.3.40.0070.04712.04
4.3.30.0070.02712.04
4.3.20.0030.01312.04
4.3.10.0000.02312.04
4.3.00.0000.01712.04

preferences:
48.66 ms | 400 KiB | 5 Q