好吧,我使用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));' –