Подгонка соответствия и подсчет результата в короткой строке

У меня уже есть функция, которая подсчитывает количество элементов в строке ($ paragraph) и сообщает мне, сколько символов результат, т. Е. Tsp и tbsp present – 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) правильно?

EDIT извините за мяч кривой, но может быть пробел между числом и $ item, может ли preg_match уловить оба экземпляра?

Solutions Collecting From Web of "Подгонка соответствия и подсчет результата в короткой строке"

Мне не совсем понятно, что вы пытаетесь сделать с регулярным выражением, но если вы просто пытаетесь сопоставить определенную комбинацию числовых измерений, это может помочь:

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

Это вернет количество раз, когда комбинация числового измерения встречается в $paragraph .

EDIT переключился на использование 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