我以前做过这个,但我忘记了所有的步骤。我已经想过如何使用file_get_contents()函数抓取页面并删除所有不必要的
$data = file_get_contents("index.php"); //read the file
$data = strip_tags($data);
$data = strtoupper($data);
接下来,我使用自定义爆炸功能删除所有指定的分隔
$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)
如何过滤掉其中没有任何内容的键?感谢。
答案 0 :(得分:0)
使用不带参数的array_filter删除空元素。
$convert = array_filter($convert);
$count = array_count_values($convert);
答案 1 :(得分:0)
您可以使用正则表达式替换空格。我相信这会奏效......
$newData = preg_replace("/\s/", '', $data);
答案 2 :(得分: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);