Come arrivare Content-type utilizzando HTML semplice dom?
-
19-09-2019 - |
Domanda
ho provato find('meta[http-equiv="Content-type"]')
ma non è riuscito a recuperare le informazioni.
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