好吧,我使用PHP從網頁中抓取一些數據,並以某種方式拉入源文檔中不存在的某些意外字符。我想這是因爲我解釋了錯誤的字符編碼,雖然我不能確定如何解決這個問題使用PHP刮頁面會導致意想不到的字符
這裏是HTML的給我的錯誤
<tr>
<td>Aug 2013</td>
<td>TEDxColbyCollege</td>
<td>
<a href="/talks/daniel_h_cohen_for_argument_s_sake.html">Daniel H. Cohen: For argument’s sake</a> </td>
.
.
.
// more of the table
現在得到的字符串我附和/存儲在一個試片DB是這樣的:Daniel H. Cohen: For argumentâÂÂs sake
我使用下面的代碼加載HTML文檔和刮
$html = file_get_contents('url_of_html_page_being_scrapped');
$doc = new DOMDocument();
$doc->loadHTML($html);
$sxml = simplexml_import_dom($doc);
$table = $sxml->xpath('//table');
foreach($tbl->tr as $vid)
{
.
.
echo $vid->td[2]->a // line giving me the problem
.
.
}
頭的文件表明
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
.
.
</head>
所以我假設我的方法不正確解釋的字符集,雖然我不確定我怎麼可以指定這個,或者如果它甚至問題...也似乎發生在錯誤值:'
任何洞察到發生了什麼/我該如何解決它會爲我不確定是真棒
更新後從@Patrick曼瑟一些建議,我試圖解決在SO別處找到
主要有:
$html =stripslashes(mb_convert_encoding(file_get_contents('http://www.ted.com/talks/quick-list?sort=date&order=desc&page=1'), "HTML-ENTITIES", "UTF-8"));
//AND
$html = mb_convert_encoding(file_get_contents('http://www.ted.com/talks/quick-list?sort=date&order=desc&page=1'), "HTML-ENTITIES", "UTF-8");
兩個導致輸出出現像這樣Daniel H. Cohen: For argument’s sake
'$ html = file_get_contents('url_of_html_page_being_scrapped');'是那個頁面,你把''? –
不,我沒有把任何東西放在'url_of_html_page_being_scrapped'文件的頭部,如上面顯示爲<!doctype html>
。 。 ' – brendosthoughts這就是我的意思:)嗯,我不知道這是否會爲你工作,但我有類似的問題,並在內容被加載的UTF8_encode()做了竅門。我不知道這是否是一個不正當的黑客...但嘗試它:'$ doc-> loadHTML(utf8_encode($ html));' –