У меня уже есть функция, которая подсчитывает количество элементов в строке ($ 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 уловить оба экземпляра?
Мне не совсем понятно, что вы пытаетесь сделать с регулярным выражением, но если вы просто пытаетесь сопоставить определенную комбинацию числовых измерений, это может помочь:
$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