0

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

4

1 回答 1

5

我不太清楚你想用正则表达式做什么,但如果你只是想匹配一个特定的数字测量组合,这可能会有所帮助:

$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

于 2009-11-30T22:57:02.133 回答