我已经有一个函数来计算字符串中的项目数($ paragraph)并告诉我结果有多少个字符,即tsp和tbsp表示为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)
那样对吗?
编辑抱歉曲线球但是数字和$ item之间可能有空格,一个preg_match可以捕获这两个实例吗?
答案 0 :(得分:4)
我不太清楚你正在尝试使用正则表达式做什么,但如果你只想尝试匹配一个特定的数字 - 测量组合,这可能会有所帮助:
$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