Pergunta

eu tentei find('meta[http-equiv="Content-type"]') Mas não conseguiu recuperar essas informações.

Foi útil?

Solução

Simplehtmldom não usa literais de string citados no seletor. É apenas elem[attr=value]. E a comparação de valor Parece ser sensível ao minúsculo (pode haver uma maneira de torná-lo insensível ao caso, mas que eu não sei)*

Por exemplo

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

impressões text/html; charset=ISO-8859-1.

*Editar: Sim, existe uma maneira de realizar uma correspondência insensível ao caso, use *= ao invés de =

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

edit2: btw que http-equiv*=content-type coisa também combinaria <meta http-equiv="haha-no-content-types"... (Ele apenas testa se a string estiver em algum lugar no valor do atributo). Mas é a única função/operadora insensível ao caso que encontrei. Eu acho que você pode viver com isso neste caso ;-)
Edit 3: ele usa preg_match ('.../i') e o padrão/seletor é passado diretamente para essa função. Portanto, você poderia faça algo como http-equiv*=^content-type$ Para combinar http-equiv="Content-type" mas não http-equiv="xyzContent-typeabc". Mas não sei se esse é um recurso garantido.

Outras dicas

O tipo de conteúdo geralmente faz parte dos cabeçalhos de resposta HTTP-não no corpo. De onde você tirou o documento XML?

eu iria foreach sobre $this->find('meta'); em caso de escrito de maneira diferente content-type - Acho que os navegadores não são sensíveis a caso, enquanto o PHP pode ser.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top