]*charset="?gb2312"[^>]*>#', $ data)" peut résoudre les caractères tronqués."/> ]*charset="?gb2312"[^>]*>#', $ data)" peut résoudre les caractères tronqués.">
Maison >développement back-end >Problème PHP >Comment résoudre le problème php dom tronqué
Solution au code tronqué php dom : définissez d'abord une méthode "curl_get" pour demander des informations sur la page URL ; puis utilisez "preg_match('#]*charset="?gb2312"[^>] * >#', $data)" peut résoudre les caractères tronqués. [^>
Recommandé : "Tutoriel vidéo PHP"
DOM est un traitement XML et HTML relativement nouveau dans php, vous pouvez utiliser l'arborescence DOM aussi facilement que JavaScript. Plus d'informations sur Internet sur la façon dont il gère XML. L'article d'aujourd'hui présentera la méthode PHP pour résoudre les caractères tronqués du DOM. Il n'y a pas grand chose à dire ci-dessous, il suffit de regarder 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 le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!