Frage

Ich habe versucht find('meta[http-equiv="Content-type"]') aber es versäumt, diese Informationen abzurufen.

War es hilfreich?

Lösung

SimpleHTMLDom verwendet nicht zitiert Stringliterale im Selektor. Es ist nur elem[attr=value]. Und der Vergleich von Wert scheint Fall empfindlich zu sein (es kann ein Weg sein, um es Groß- und Kleinschreibung zu machen, aber das weiß ich nicht) *

z.

require 'simple_html_dom.php';
$html = file_get_html('http://www.google.com/');
// most likely one one element but foreach doesn't hurt
foreach( $html->find('meta[http-equiv=content-type]') as $ct ) { 
  echo $ct->content, "\n";
}

druckt text/html; charset=ISO-8859-1.

* edit: ja, es gibt eine Möglichkeit, ein Groß- und Kleinschreibung Spiel, verwendet *= statt =

auszuführen
find('meta[http-equiv*=content-type]')

edit2: btw, dass http-equiv*=content-type Dingen würde auch <meta http-equiv="haha-no-content-types"... Übereinstimmen (es nur Tests, wenn die Zeichenfolge irgendwo in dem Wert des Attributs ist). Aber es ist der einzige Fall, unempfindliche Funktion / Operator ich finden konnte. Ich denke, man mit ihm in diesem Fall leben kann ;-)
bearbeiten 3: Es verwendet preg_match ( ‚... / i‘) und das Muster / Selektor wird direkt an diese Funktion übergeben. Daher Sie könnte so etwas wie http-equiv*=^content-type$ tun http-equiv="Content-type" passen, aber nicht http-equiv="xyzContent-typeabc". Aber ich weiß nicht, ob dies eine zugesicherten Eigenschaft ist.

Andere Tipps

Der Content-Type ist in der Regel ein Teil der http-Response-Header - nicht im Körper. Wo haben Sie das XML-Dokument aus?

Ich würde foreach auf $this->find('meta'); bei anders geschrieben content-type gehen - ich glaube, dass Browser in diesem Fall nicht Groß- und Kleinschreibung ist, während PHP sein könnte

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top