وتقوية مطابقة واحتساب نتيجة المباراة في سلسلة قصيرة
-
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