2013-05-06 60 views
0

我以前做過這個,但我忘記了所有的步驟。我已經想通了如何使用的file_get_contents()函數來抓取頁面,去除了所有不必要的什麼是將我的頁面編入MySQL數據庫的最佳方式,用於定製PHP搜索引擎?

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

接下來的,我使用的是自定義的爆炸功能,刪除所有的指定分離

$sep = " ():.,[email protected]#$%^&*[]{}?<>;"; 
$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

您可以用正則表達式替換空格。我相信這會工作...

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

+0

chuckieDub,即將所有單詞齧合在一起,但它確實刪除了空格。但仍然不是我所需要的。 – Erica 2013-05-06 19:56:01

+0

啊我明白了。你循環通過你的數組元素,並刪除它們,因爲在這篇文章中... http://stackoverflow.com/questions/369602/how-to-delete-an-element-from-an-array-in-php – chuckieDub 2013-05-06 20:00:48

+0

chuckieDub,謝謝,看起來似乎是最好的方法,但它不認可空格爲空或「」只是一個空格。 – Erica 2013-05-06 20:21:41

0

使用array_filter不帶任何參數來刪除空元素。

$convert = array_filter($convert); 
$count = array_count_values($convert); 
+0

Xeoncross,我只是去嘗試,並且不過濾掉那些空白鍵。任何其他想法? – Erica 2013-05-06 19:52:16

+0

@Erica,我剛剛意識到你所提出的是不可能的(array_filter仍然是過濾空元素而不是*鍵的正確方法)。您的輸出中有錯誤,因爲數組只能包含具有相同值的*單個*鍵。您不能有多個空白的數組鍵。檢查你的代碼。 – Xeoncross 2013-05-06 21:15:24

0

我會用未設定功能在foreach。

$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); 
相關問題