Maison >développement back-end >tutoriel php >Méthode PHP pour résoudre le code tronqué du DOM
J'ai récemment rencontré un problème au travail. Lors de l'utilisation de DOM, j'ai découvert le problème des caractères tronqués. Plus tard, je l'ai finalement résolu en recherchant des informations sur Internet. Je vais maintenant partager la solution avec tout le monde. référence, les amis dans le besoin peuvent venir apprendre ensemble.
Avant-propos
DOM est une classe de traitement XML et HTML relativement nouvelle en PHP. Elle peut exploiter l'arborescence DOM aussi facilement que Javascript. sur Internet Le but de cet article est de présenter son traitement XML. L'article d'aujourd'hui présentera la méthode PHP pour résoudre les caractères tronqués du DOM. Je n'entrerai pas dans les détails ci-dessous, mais regarderai simplement la solution ci-dessous.
La solution est la suivante
/** * 请求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');
Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.
Recommandations associées :
phpExemple détaillé de mise en œuvre de l'aperçu du téléchargement d'avatar
phpExplication détaillée de l'exemple d'aperçu de téléchargement d'avatar
Explication détaillée des fonctions de sérialisation et de désérialisation PHP avec images et texte
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!