Preg匹配并在短字符串中计算结果匹配

时间:2009-11-30 22:44:48

标签: php text count preg-match

我已经有一个函数来计算字符串中的项目数($ 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可以捕获这两个实例吗?

1 个答案:

答案 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