0

送信された html ドキュメントからさまざまな要素を解析するために単純な html DOM を使用しています。私は次のことを確認する方法を理解しようとしています

<meta http-equiv="refresh" content="100">

使ってみました。

foreach($html->find('meta') as $element){
    if($element->http-equiv=='refresh'){ refreshFound(); }
}

Use of undefined constant equiv というエラーが表示されます。- 記号のためにステートメントを形成する特別な方法はありますか?

4

3 に答える 3

1

そのはず$element->attr

foreach ( $html->find('meta') as $element ) {
    var_dump($element->attr);
}

出力

array
  'http-equiv' => string 'refresh' (length=7)
  'content' => string '100' (length=3)
array
  'http-equiv' => string 'Content-Type' (length=12)
  'content' => string 'text/html; charset=utf-8' (length=24)
array
  'name' => string 'robots' (length=6)
  'content' => string 'noindex' (length=7)

簡単なチェック

foreach ( $html->find('meta') as $element ) {
    foreach ( $element->attr as $key => $value ) {
        if ($key == "http-equiv" && $value == 'refresh') {
            echo "FOUND";
        }
    }
}

出力

FOUND 

ノート*

Directly を使用する$element->attr["http-equiv"]と、サイトにない場合があるため、以下のエラーが生成されますhttp-equiv

Notice: 未定義のインデックス: http-equiv

于 2012-10-13T18:53:30.867 に答える
1

あなたは減算を行っています:$element->http minus equiv

「refresh」を含む http-equiv 属性を持つメタ要素を直接見つけてみませんか?

サンプルページから、これはうまくいくはずです:$html->find('div[id=hello]', 0)->innertext = 'foo';

$html->find('meta[http-equiv=refresh]');「リフレッシュ」コンテンツを含む http-equiv を持つ要素も見つける必要があると思います。

于 2012-10-13T18:54:26.760 に答える
0

これを試して。

if(@$element->attr['http-equiv'] == 'refresh') { 
    refreshFound(); 
}

@ドキュメントに. _ Notice: undefined index_ _meta:http-equiv

于 2012-10-13T18:55:46.813 に答える