计数在PHP正则expression式模式的话?

我试图在linux中匹配来自'/ usr / share / dict / words'的模式'lly',我可以在浏览器中显示它们。 我想要统计与模式匹配的字数,并在输出结束时显示总数。 这是我的PHP脚本。

<?php $dfile = fopen("/usr/share/dict/words", "r"); while(!feof($dfile)) { $mynextline = fgets($dfile); if (preg_match("/lly/", $mynextline)) echo "$mynextline<br>"; } ?> 

您可以使用count函数来计算它们的数组元素数量。 所以你只需要每次添加到这个数组,然后数一下。

 <?php $dfile = fopen("/usr/share/dict/words", "r"); //Create an empty array $array_to_count = array(); while(!feof($dfile)) { $mynextline = fgets($dfile); if (preg_match("/lly/", $mynextline)){ echo "$mynextline<br>"; //Add it to the array $array_to_count[] = $mynextline; } } //Now we're at the end so show the amount echo count($array_to_count); ?> 

如果你不想存储所有的值(可能派上用场,但无论如何),一个更简单的方法是增加一个整数变量,如下所示:

 <?php $dfile = fopen("/usr/share/dict/words", "r"); //Create an integer variable $count = 0; while(!feof($dfile)) { $mynextline = fgets($dfile); if (preg_match("/lly/", $mynextline)){ echo "$mynextline<br>"; //Add it to the var $count++; } } //Show the number here echo $count; ?> 

PHP:Glob – 手册

 sizeof(glob("/lly/*")); 

@编辑

另外,你可以这样做:

 $array = glob("/usr/share/dict/words/lly/*") foreach ($array as $row) { echo $row.'<br>'; } echo count($array);