[英]Special characters encoding in PHP while using Loadhtmlfile
我正在使用一个PHP文件来分析不同网页的标题,描述和其他标签。
这是我们的代码
if (isset($_SESSION['user_id']) && !empty($_SESSION['user_id'])) {
$images = [];
$url = $_GET['req'];
$ext = ['.jpeg', 'jpg', 'png', 'bmp', 'ico'];
$doc = new DOMDocument('1.0','UTF-8');
$doc->loadHTMLFile($url);
$doc->encoding = 'UTF-8';
var_dump($doc);
$uri = $doc->documentURI;
$parse = parse_url($uri);
$host = $parse['host']; //hostname
$title = $doc->getElementsByTagName('title')->item(0); // title
$metas = $doc->getElementsByTagName('meta');
$details["title"] = $title->textContent;
$details["host"] = $host;
$details['uri'] = $uri;
foreach ($metas as $meta) {
...继续...
在这里,如果我们的URL文档包含任何特殊字符,则PHP无法识别它。 它给我们带来乱码。 我在SO上经历了不同的问题,这似乎是UTF-8编码问题。 但是我已经在代码中使用了UTF 8。 请帮我。
注意在构造函数中使用encoding参数。 这并不意味着所有数据都会以提供的编码自动为您编码。 一旦选择了默认UTF-8以外的编码,就需要自己做。 有关如何正确使用其他编码的信息,请参阅有关DOM函数的注释。
构造函数示例清楚地表明,版本和编码仅以XML标头结尾。
引荐来源网址 : http : //php.net/manual/en/domdocument.construct.php
IT看起来构造函数不需要您将第二个参数传递给它。 您是否尝试过在没有该代码的情况下运行代码? 我承认我对DOMDocument的理解有点差,但是如果它代表一个完整的HTML文档,那么大多数网络浏览器对于丢失编码信息不会有太多的犹豫,他们会尽力而为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.