Gebelik eşleştirme ve kısa bir dize sonuçlanan maçı sayma

1 Cevap php

Ben zaten bir dize öğelerin sayısını ($ paragraf) sayar ve sonucu yani kaşığı, yemek kaşığı ve mevcut 7 kaç karakter söyler bir işlevi var, ben olduğunu dize yüzdesini çalışmak için kullanabilirsiniz.

Ben 10tsp 5 olarak saymak gerekir, çünkü preg_match ile bu güçlendirmek gerekir.

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

Ben preg_match('#[d]+[item]#', $paragraph) sağ gibi bir şey olurdu biliyor musun?

EDIT eğri topu için üzgünüm ama sayısında inbetween bir boşluk ve $ öğesi olabilir, bir iki örneği yakalamak preg_match olabilir?

1 Cevap

Bu regex ile yapmaya çalıştığınız ne bana oldukça açık değil, ama sadece belirli bir numara ölçüm kombinasyonu için maç çalışıyorsanız, bu yardımcı olabilir:

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

Bu sayı-ölçüm kombinasyonu $paragraph oluşur sayısını dönecektir.

EDIT preg_match_all tüm tekrarlarını saymak için kullanabileceğiniz geçti.

Eşleşen karakter sayısını saymak için örnek:

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

Yukarıdaki yürütülmesini Çıkışı:

karakter sayısı: 11