似乎preg_match正在工作,直到找到第一个匹配然后停止:
$bgStr="<><><><><><><>";
$regStr='/</';
preg_match_all($regStr,$bgStr,$matches);
echo count($matches);
给我结果:&#34; 1&#34;。我错过了什么?
答案 0 :(得分:0)
至少有3种逻辑方法可以实现对小于符号的计数。 列出的最后一个是最好/最有效/推荐的......
preg_match_all()有点矫枉过正。 它在一个数组中创建一个数组,其中包含必须计算的元素。
$bgStr="<><><><><><><>";
if(preg_match_all('/</',$bgStr,$matches)){
echo sizeof($matches[0]); // counts the fullstring elements that preg_match_all creates
}
count_chars()有点矫枉过正。 为字符串中的每个字符创建一个元素数组,如CodeNumber=>Count
。
$bgStr="<><><><><><><>";
echo count_chars($bgStr,1)[60];
substr_count()是最精简的方法,具体而言 为此目的而设计。 这是一个单功能,单线程 不会产生过多的数据,也不需要额外的变量。
$bgStr="<><><><><><><>"; echo substr_count($bgStr,'<');
上述所有方法都会输出:7