HTMLの簡単なDOMを使用してContent-typeを取得する方法?
-
19-09-2019 - |
質問
私はfind('meta[http-equiv="Content-type"]')
を試してみましたが、それは、その情報を取得できませんでした。
解決
SimpleHTMLDomセレクタに引用符で囲まれた文字列リテラルを使用していません。それはちょうどelem[attr=value]
です。そして、の比較は、は値がは大文字と小文字を区別するように思われる(そこ大文字小文字を区別しないようにする方法かもしれませんが、私は知らないこと)*
例えばます。
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";
}
text/html; charset=ISO-8859-1
を印刷します。
*編集:はい、大文字と小文字を区別しないマッチングを実行する方法があり、代わりに*=
の=
を使用する
find('meta[http-equiv*=content-type]')
EDIT2:ところでそのhttp-equiv*=content-type
ブツも<meta http-equiv="haha-no-content-types"...
と一致します(これは文字列属性の値のどこかにある場合にのみテスト)。しかし、それは私が見つけることができる唯一の大文字と小文字を区別しない機能/オペレーターです。私はあなたがこの場合;-)でそれと一緒に暮らすことができますね
3編集:それはするpreg_matchを使用しています(「... / I」)とパターン/セレクタが直接その関数に渡されます。したがって、あなたは<全角> の可能性http-equiv*=^content-type$
と一致したがhttp-equiv="Content-type"
ないようにhttp-equiv="xyzContent-typeabc"
ような何かを行います。これが正当な特徴である場合しかし、私は知りません。
他のヒント
のContent-Typeは、通常のhttpレスポンスヘッダの一部です。どこからXML文書を取得したのですか?
私は違っ書かforeach
の場合に$this->find('meta');
にcontent-type
を行くだろう - 私は、PHPのかもしれませんが、ブラウザが、この場合はケースに敏感ではないと思います。