2016-02-12 38 views
2

我想湊一些舊的網頁,並使用DOM如何解決與DOM

在現代化的設計呈現出來,我編我有一個問題,編碼,內容是在法國

我使用這個代碼來獲得我想要的內容,有2類型的內容,「類別」和「數據」

$html = new DOMDocument(); 
$html->validateOnParse = true; 
@$html->loadHTML($page); 

$xpath = new DOMXPath($html); 
$table =$xpath->query("//*[@style='background: white']")->item(0); 

然後我處理的內容,首先,我進入一個功能,將它們轉換類別以身份證爲我

function category_to_id($category) { 
    $categories = array('Forêts','Assurance','Aéronautique','Equipement ','Autre'); 

    foreach ($categories as $id => $cat) { 
     if(trim($cat) == trim($category)) { 
      return $id + 1; 
     } 
} 

} 

然後,我存儲所有MYSQL數據庫

我的第一個問題是隻針對類別無特殊charachters像保證

而第二個我的函數的工作,當我去到數據庫中,我找到了數據存儲喜歡這個Travaux d'électricité代替Travaux d'électricité

我嘗試添加$html->encoding = 'utf-8';但是這並沒有改變任何東西

我在做什麼錯了,我怎麼能解決這個問題

+0

文件編碼爲utf-8? '<?xml version =「1.0」encoding =「UTF-8」?>'例如,您可以在標題部分查看。 – Naumov

+0

@Naumov @Naumov我不知道我明白,這些文件是在HTML中只有在標題 '' –

回答

0

大教堂不使用UTF-8作爲默認,所以你應該在頁面編碼爲它

$xml->loadHTML(mb_convert_encoding($page, 'HTML-ENTITIES', "UTF-8");); 

或者,你可以utf8_decode您的字符串

echo category_to_id(utf8_decode("Travaux d'électricité")); 
+0

'utf8_decode'是正確的答案,我沒有使用'mb_convert_encoding',因爲它只完全刪除特殊字符,它將'Aéronautique'轉換爲'Aronautique' –