Ich bin kürzlich auf ein Problem bei der Verwendung von DOM gestoßen und habe es schließlich durch die Suche nach Informationen im Internet gelöst. Jetzt kann ich die Lösung mit allen teilen Als Referenz können bedürftige Freunde kommen und gemeinsam lernen.
Vorwort
DOM ist eine relativ neue XML- und HTML-Verarbeitungsklasse in PHP. Sie kann den DOM-Baum genauso bequem bedienen wie Javascript im Internet Der Zweck dieses Artikels besteht darin, die Verarbeitung von XML vorzustellen. Im Folgenden wird die Methode von PHP zur Lösung verstümmelter DOM-Zeichen vorgestellt.
Die Lösung ist wie folgt
/** * 请求url页面信息 * @param str $url * @return str mixed|boolean */ function curl_get($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //302跳转 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0'); curl_setopt($curl, CURLOPT_REFERER, $url); $data = curl_exec($curl); $code = curl_getinfo($curl,CURLINFO_HTTP_CODE); //输出请求状态码 curl_close($curl); if(200 == $code) { //解决乱码 if (preg_match('#<meta[^>]*charset="?gb2312"[^>]*>#', $data)) { $data = iconv("gb2312","utf-8//IGNORE",$data); $data = preg_replace('#<meta[^>]*charset="?gb2312"[^>]*>#is', '<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">', $data); } if (!preg_match('#<meta charset="utf-8"[^>]*>#is', $data)) { $data = str_replace('<head>', '<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">', $data); } if (preg_match('#<meta charset="utf-8"[^>]*>#is', $data)) { $data = preg_replace('#<meta charset="utf-8"[^>]*>#is', '<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">', $data); } return $data; } else { return false; } }
/** * 获取 DOMDocument 对象 * @param str $url * @return boolean|DOM */ function getDom($url) { $html_content = curl_get($url); if(empty($html_content)) { //saveLog($url, '请求失败'); return false; } $dom = new DOMDocument('1.0', 'utf-8'); libxml_use_internal_errors(true); $dom->loadHTML($html_content); return $dom; }
$html_content = mb_convert_encoding($html_content, 'UTF-8', 'gb2312');
Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, er wird für das Studium aller hilfreich sein.
Verwandte Empfehlungen:
phpDetailliertes Beispiel für die Implementierung der Avatar-Upload-Vorschau
phpAusführliche Erläuterung des Vorschaubeispiels für einen Avatar-Upload
Das obige ist der detaillierte Inhalt vonPHP-Methode zum Lösen von verstümmeltem DOM-Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!