0

我以前做过这个,但我忘记了所有的步骤。我已经想出了如何使用 file_get_contents() 函数抓取页面并删除所有不必要的

$data = file_get_contents("index.php"); //read the file
$data = strip_tags($data);
$data = strtoupper($data);

接下来,我使用了一个自定义的 explode 函数,它删除了所有指定的分隔符

$sep = "   ():.,!@#$%^&*[]{}?<>;";
$convert = superExplode($data, $sep);
function superExplode($str, $sep) {
    $i = 0;
    $arr[$i++] = strtok($str, $sep);
    while($token = strtok($sep))
    $arr[$i++] = $token;
    return $arr;
}

最后,我使用 array_count_values() 计算每个单词的每个实例,它将每个单词存储为键,单词计数作为值

$count = array_count_values($convert);

现在我可以简单地使用 foreach 循环来获取要存储在数据库中的键和字数。但是,我遇到的问题是,当我执行 print_r($count) 时,我在 $count 数组中得到了空白键。例如:

print_r($count);

返回:

 Array ([] => 1
 [] => 2 
 [] => 1 
 [HOME] => 1 
 [] => 1 
 [SUBMIT] => 1 
 [NEW] => 1 
 [VIEW] => 1)

如何过滤掉其中没有任何内容的键?谢谢。

4

3 回答 3

0

我会在 foreach 中使用 unset 函数。

$array = array(
        '' => '1',
        '' => '2',
        '' => '1',
        'HOME' => '1',
        '' => '1',
        'SUBMIT' => '1',
        'NEW' => '1',
        'VIEW' => '1'
    );

function cleanArray($array){        
    foreach($array as $cleanMe => $value){
        if(empty($cleanMe)){
            unset($array[$cleanMe]);
        }
    }       
    return $array;
}

测试它

$arr = cleanArray($array);
print_r($arr);
于 2013-05-06T22:16:00.150 回答
0

使用不带参数的array_filter删除空元素。

$convert = array_filter($convert);
$count = array_count_values($convert);
于 2013-05-06T19:47:23.087 回答
0

您可以用正则表达式替换空格。我相信这会奏效...

$newData = preg_replace("/\s/", '', $data);

于 2013-05-06T19:53:09.953 回答