Question

J'ai essayé find('meta[http-equiv="Content-type"]') mais il n'a pas pu récupérer ces informations.

Était-ce utile?

La solution

SimpleHTMLDom n'utilise pas littéraux chaîne entre guillemets dans le sélecteur. Il est juste elem[attr=value]. Et la comparaison des valeur semble être sensible à la casse (il peut y avoir un moyen de le rendre insensible à la casse cas, mais je ne sais pas) *

par exemple.

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";
}

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

* edit: oui, il y a un moyen d'effectuer une correspondance insensible à la casse, utilisez *= au lieu de =

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

Edit2: BTW que thingy http-equiv*=content-type retrouverait aussi <meta http-equiv="haha-no-content-types"... (il vérifie uniquement si la chaîne est quelque part dans la valeur de l'attribut). Mais il est la seule fonction insensible à la casse / opérateur que je pouvais trouver. Je suppose que vous pouvez vivre avec elle dans ce cas ;-)
modifier 3: Il utilise preg_match ( « ... / i ») et le motif / sélecteur est directement transmis à cette fonction. Par conséquent, vous peut faire quelque chose comme http-equiv*=^content-type$ pour correspondre http-equiv="Content-type" mais pas http-equiv="xyzContent-typeabc". Mais je ne sais pas si cela est une caractéristique couverte par la garantie.

Autres conseils

Le type de contenu est généralement partie des en-têtes de réponse HTTP - pas dans le corps. Où avez-vous obtenu le document XML à partir?

J'irais foreach sur $this->find('meta'); en cas de content-type écrit différemment - Je pense que les navigateurs ne sont pas dans ce cas sensible à la casse, alors que php pourrait être

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top