Pregunta

He intentado find('meta[http-equiv="Content-type"]') pero no pudo recuperar esa información.

¿Fue útil?

Solución

SimpleHTMLDom no utiliza cadenas literales indicados en el selector. Es sólo elem[attr=value]. Y la comparación de valor parece ser entre mayúsculas y minúsculas (puede haber una manera para que sea sensible a las mayúsculas, pero eso no lo sé) *

por ejemplo.

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

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

* Editar: sí, hay una forma de realizar un partido entre mayúsculas y minúsculas, utilice *= en lugar de =

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

Edit2: por cierto que cosita http-equiv*=content-type también coincidiría <meta http-equiv="haha-no-content-types"... (que sólo las pruebas si la cadena está en algún lugar en el valor del atributo). Pero es la única función de mayúsculas y minúsculas / operador que pude encontrar. Creo que se puede vivir con ella en este caso ;-)
Datos 3: Utiliza preg_match ( '... / i') y el patrón / selector se pasa directamente a esa función. Por lo tanto, podría hacer algo como http-equiv*=^content-type$ para que coincida con http-equiv="Content-type" pero no http-equiv="xyzContent-typeabc". Pero no sé si esto es una característica garantizada.

Otros consejos

El Content-Type es típicamente parte de las cabeceras HTTP de respuesta - no en el cuerpo. ¿Dónde obtuvo el documento XML a partir de?

Me gustaría ir foreach en $this->find('meta'); en caso de content-type diferente por escrito - Creo que los navegadores no están en este caso entre mayúsculas y minúsculas, mientras que PHP puede ser

.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top