Domanda

ho provato find('meta[http-equiv="Content-type"]') ma non è riuscito a recuperare le informazioni.

È stato utile?

Soluzione

SimpleHTMLDom non usa letterali stringa tra virgolette nel selettore. E 'solo elem[attr=value]. E il confronto delle Valore sembra essere maiuscole e minuscole (ci può essere un modo per rendere maiuscole e minuscole, ma che io non so) *

per es.

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

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

* Modifica: sì, c'è un modo per eseguire una corrispondenza case-insensitive, utilizzare *= invece di =

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

EDIT2: btw che http-equiv*=content-type thingy sarebbe anche corrispondere <meta http-equiv="haha-no-content-types"... (è solo test se la stringa è da qualche parte nel valore dell'attributo). Ma è l'unica funzione di case-insensitive / operatore sono riuscito a trovare. Credo che si può vivere con essa in questo caso ;-)
EDIT 3: Si utilizza preg_match ( '... / i') e il modello / selettore passa direttamente a tale funzione. Pertanto è potrebbero fare qualcosa di simile http-equiv*=^content-type$ per abbinare http-equiv="Content-type" ma non http-equiv="xyzContent-typeabc". Ma io non so se questa è una caratteristica giustificata.

Altri suggerimenti

Il Content-Type è in genere parte delle intestazioni HTTP di risposta - non nel corpo. Dove hai preso il documento XML dal?

Vorrei andare foreach su $this->find('meta'); in caso di content-type diverso scritta - penso che i browser non sono in questo caso tra maiuscole e minuscole, mentre php potrebbe essere

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top