对于自定义PHP搜索引擎,将我的页面索引到MySQL数据库的最佳方法是什么?

时间:2013-05-06 19:40:39

标签: php mysql

我以前做过这个,但我忘记了所有的步骤。我已经想过如何使用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)

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

3 个答案:

答案 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);