وتقوية مطابقة واحتساب نتيجة المباراة في سلسلة قصيرة

StackOverflow https://stackoverflow.com/questions/1822952

  •  10-07-2019
  •  | 
  •  

سؤال

لدي وظيفة بحساب عدد العناصر في سلسلة ($الفقرة) و يقول لي كيف العديد من الشخصيات النتيجة ، أي ملعقة صغيرة و ملعقة كبيرة الحاضر هو 7 ، يمكنني استخدام هذا العمل نسبة من هذه السلسلة.

أنا بحاجة لتعزيز هذا مع preg_match لأن 10tsp يجب الاعتماد 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);

وأنا أعلم أنه سيكون شيئا مثل preg_match('#[d]+[item]#', $paragraph) أليس كذلك ؟

تحرير آسف على منحنى الكرة ولكن قد يكون هناك مساحة في المنتصف عدد دولار البند يمكن واحد preg_match قبض كل الحالات ؟

هل كانت مفيدة؟

المحلول

انها ليست واضحة تماما بالنسبة لي ما كنت تحاول القيام به مع regex, ولكن إذا كنت في محاولة لمطابقة لعدد معين-قياس الجمع ، وهذا قد تساعد:

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

هذا سيعود عدد مرات عدد قياس تركيبة يحدث في $paragraph.

تحرير تحولت إلى استخدام preg_match_all نحسب جميع الحوادث.

مثلا حساب عدد يقابل الشخصيات:

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

الناتج من تنفيذ ما سبق:

إجمالي عدد الأحرف:11

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top