simple_html_dom忽略特殊字符
我使用的代码是下面的代码,在我遇到具有日文字符或任何特殊字符的URL之前,这项工作完全正常。我观察过这个问题,它似乎只是在URL包含特殊字符(如日语)时才返回域名,结果我不断收到随机结果,我不打算检索。simple_html_dom忽略特殊字符
include_once 'simple_html_dom.php';
header('Content-Type: text/html; charset=utf-8');
$url_link = 'http://kissanime.com/Anime/Knights-of-Ramune-VS騎士ラムネ&40FRESH';
$html = file_get_html($url_link);
echo $html->find('.bigChar', 0)->innertext;
我应该得到“Ramune骑士”的结果,因为这是我试图检索的元素。相反,$ url_link被重定向到域名'http://kissanime.com/',没有'动漫/骑士骑士VS骑士ラムネ&40FRESH'。从那里,它会查找具有“.bigChar”值的类,从而得到随机值。
真正的问题域是,如何使用UTF-8字符的URL而不是simple_html_dom
检索数据。
首先,我们需要编码字符:
$url_link = 'http://kissanime.com/Anime/Knights-of-Ramune-VS騎士ラムネ&40FRESH';
$strPosLastPart = strrpos($url_link, '/') + 1;
$lastPart = substr($url_link, $strPosLastPart);
$encodedLastPart = rawurlencode($lastPart);
$url_link = str_replace($lastPart, $encodedLastPart, $url_link);
Normaly这应该工作。由于我测试了它,它不起作用。所以我在问为什么会发生这种错误,并使用CURL进行了一次呼叫。
未将对象引用设置为对象的实例。说明:执行当前Web 请求期间发生未处理的异常 。请查看堆栈跟踪以获取有关 错误以及源代码的更多信息。
异常详细信息:System.NullReferenceException:对象引用不是 设置为对象的实例。
现在我们知道,这个页面是用ASP.NET编写的。但我问我,为什么它不工作。我添加了一个用户代理,瞧:
$ch = curl_init($url_link);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0');
$data = curl_exec($ch);
echo $data;
所有在一起(工作):
$url_link = 'http://kissanime.com/Anime/Knights-of-Ramune-VS騎士ラムネ&40FRESH';
//Encode Characters
$strPosLastPart = strrpos($url_link, '/') + 1;
$lastPart = substr($url_link, $strPosLastPart);
$encodedLastPart = rawurlencode($lastPart);
$url_link = str_replace($lastPart, $encodedLastPart, $url_link);
//Download Data
$ch = curl_init($url_link);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0');
$data = curl_exec($ch);
//Load Data into Html (untested, since i am not using this Lib)
$html = str_get_html($data);
现在的区别是,读$data
到您的simple_html_dom.php
类,而不是file_get_html
。
干杯
如何使用simple_html_dom.php扩展来应用此操作? – 2014-09-01 16:19:55
不知道这个lib,但是'str_get_html($ data)'呢? – 2014-09-01 16:23:21
这工作得很好,谢谢! – 2014-09-01 18:26:06
您应该回显$ html以查看您是否正确检索页面。 – 2014-09-01 15:40:11
它只是将我重定向到域名只有 – 2014-09-01 15:51:48
然后问题不是与simple_html_dom,而是与file_get_html。我怀疑网址是否允许包含特殊字符,但我没有参考资料。 – 2014-09-01 15:59:40