在php中计算正则表达式模式的单词?

时间:2015-05-06 02:15:25

标签: php regex linux

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

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

2 个答案:

答案 0 :(得分:3)

您可以使用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;
?>

答案 1 :(得分:1)

PHP: Glob - Manual

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

@edit

另外,你可以这样做:

$array = glob("/usr/share/dict/words/lly/*")

foreach ($array as $row)
{
    echo $row.'<br>';
}

echo count($array);