Pergunta

Eu já tenho uma função que conta o número de itens em uma string ($ parágrafo) e me diz quantos caracteres o resultado é, ou seja, TSP e TBSP Present é 7, posso usar isso para descobrir a porcentagem dessa string.

Preciso reforçar isso com preg_match porque o 10TSP deve contar como 5.

$characters = strlen($paragraph);
$items = array("tsp", "tbsp", "tbs");
    $count = 0;

        foreach($items as $item) {

            //Count the number of times the formatting is in the paragraph
            $countitems = substr_count($paragraph, $item);
            $countlength= (strlen($item)*$countitems);

            $count = $count+$countlength;
        }

    $overallpercent = ((100/$characters)*$count);

Eu sei que seria algo como preg_match('#[d]+[item]#', $paragraph) certo?

EDITAR Desculpe pela bola curva, mas pode haver um espaço entre o número e o item $, um preg_match pode capturar as duas instâncias?

Foi útil?

Solução

Não está claro para mim o que você está tentando fazer com o Regex, mas se você está apenas tentando combinar para uma combinação específica de medição de número, isso pode ajudar:

$count = preg_match_all('/\d+\s*(tbsp|tsp|tbs)/', $paragraph);

Isso retornará o número de vezes uma combinação de medição numérica ocorre em $paragraph.

EDITAR mudou para uso preg_match_all para contar todas as ocorrências.

Exemplo para contar o número de caracteres correspondentes:

$paragraph = "5tbsp and 10 tsp";

$charcnt = 0;
$matches = array();
if (preg_match_all('/\d+\s*(tbsp|tsp|tbs)/', $paragraph, $matches) > 0) {
  foreach ($matches[0] as $match) { $charcnt += strlen($match); }
}

printf("total number of characters: %d\n", $charcnt);

Saída da execução do acima:

Número total de caracteres: 11

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top