Frage

Ich habe bereits eine Funktion, die die Anzahl der Elemente in einem String ($ Absatz) zählt und sagt mir, wie viele Zeichen das Ergebnis ist, das heißt tsp und EL vorhanden 7 ist, kann ich so den Anteil an, dass arbeiten, String ist.

Ich brauche dies mit preg_match zu verstärken, weil 10tsp als 5 zählen sollte.

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

Ich weiß, dass es so etwas wie preg_match('#[d]+[item]#', $paragraph) richtig sei?

Bearbeiten sorry für die Kurve Ball, aber es könnte ein Raum dazwischen die Anzahl und das $ item sein, kann man beiden Instanzen preg_match fangen?

War es hilfreich?

Lösung

Es ist nicht ganz klar zu mir, was Sie mit der Regex zu tun versuchen, aber wenn Sie nur versuchen, für eine bestimmte Anzahl Mess Kombination übereinstimmen, könnte dies helfen:

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

Dies wird die Anzahl, wie oft eine Zahlenmessung Rück Kombination in $paragraph auftritt.

Bearbeiten geschaltet preg_match_all verwenden, um alle Vorkommen zu zählen.

Beispiel für die Anzahl der Zeichen angepasst Zählung:

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

Ausgabe von der Ausführung des oben:

  

Gesamtzahl der Zeichen: 11

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top