]*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é

Comment résoudre le problème php dom tronqué

藏色散人
藏色散人original
2020-08-05 09:41:051425parcourir

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. [^>

Comment résoudre le problème php dom tronqué

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(&#39;#<meta[^>]*charset="?gb2312"[^>]*>#&#39;, $data)) {
      $data = iconv("gb2312","utf-8//IGNORE",$data);
      $data = preg_replace(&#39;#<meta[^>]*charset="?gb2312"[^>]*>#is&#39;, &#39;<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">&#39;, $data);
    }
    if (!preg_match(&#39;#<meta charset="utf-8"[^>]*>#is&#39;, $data)) {
      $data = str_replace(&#39;<head>&#39;, &#39;<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">&#39;, $data);
    }
    if (preg_match(&#39;#<meta charset="utf-8"[^>]*>#is&#39;, $data)) {
      $data = preg_replace(&#39;#<meta charset="utf-8"[^>]*>#is&#39;, &#39;<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">&#39;, $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, &#39;请求失败&#39;);
    return false;
  }
  $dom = new DOMDocument(&#39;1.0&#39;, &#39;utf-8&#39;);
  libxml_use_internal_errors(true);
  $dom->loadHTML($html_content);
  return $dom;
}
$html_content = mb_convert_encoding($html_content, &#39;UTF-8&#39;, &#39;gb2312&#39;);

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn