Domanda

Ho già una funzione che conta il numero di elementi in una stringa ($ paragrafo) e mi dice quanti caratteri è il risultato, cioè tsp e tbsp presenti è 7, posso usarlo per calcolare la percentuale di quello stringa è.

Devo rinforzarlo con preg_match perché 10tsp dovrebbe essere considerato come 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);

So che sarebbe qualcosa come preg_match ('# [d] + [item] #', $ paragraph) giusto?

MODIFICA scusa per la palla curva ma potrebbe esserci uno spazio tra il numero e l'elemento $, si può catturare preg_match in entrambe le istanze?

È stato utile?

Soluzione

Non è abbastanza chiaro per me cosa stai cercando di fare con la regex, ma se stai solo cercando di abbinare una particolare combinazione di misurazione dei numeri, questo potrebbe aiutare:

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

Questo restituirà il numero di volte in cui si verifica una combinazione di misure numeriche in $ paragraph .

EDIT è passato a utilizzare preg_match_all per contare tutte le occorrenze.

Esempio di conteggio del numero di caratteri corrispondenti:

$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);

Output dall'esecuzione di quanto sopra:

  

numero totale di caratteri: 11

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top