Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Methode zum Lösen von verstümmeltem DOM-Code

PHP-Methode zum Lösen von verstümmeltem DOM-Code

墨辰丷
墨辰丷Original
2018-05-30 16:18:131428Durchsuche

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(&#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;);

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

Ausführliche Erläuterung der PHP-Serialisierungs- und Deserialisierungsfunktionen mit Bildern und Text

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn