2017-09-06 15 views
0

現在、PHP DOMを使用してHTMLドキュメントの一部のタグを解析しています。私は "キーワード"メタタグUNCHANGEDのコンテンツ属性値の値を取得したいと思います。PHP:エンコードされたエンコードでDOM属性を取得

たとえば、 "keyword1、keyword2 , keyword2、keyword3"という文字列は、 "keyword1、keyword2、keyword2、keyword3"を返します。したがって、出力XMLドキュメントの実際の量のキーワードを分割します。

私はすでに "htmlentities()"を使ってみましたが、何もしませんでした。

+0

「keyword2 , keyword2」は、「Johnson&Johnson」などの繰り返しであるか、実際には2つのキーワードであると考えられる1つのキーワードであると考えられています繰り返し値を落とす。また、ほとんどの主要な検索エンジンは、キーワードメタタグをもう使用しません。だから、あなたがしようとしていることをすることの重要性に影響があるかどうかは分かりません。 – Nosajimiki

+0

はい。 "keyword2 , keyword2"は単一のキーワードです。 –

+0

explode( "、"、$ string)を使ってみましたか? – Nosajimiki

答えて

0

私はこれが遅いことを知っていますが、コードを編集して再編集した後、正規表現を使って解決策を見つけました。

function GetMetaTagsContentIntact($html, $meta_name) 
{ 
    $get_attribute_value = function($attrib, $tag) 
    { 
     //get attribute from html tag 
     $re = '/' . preg_quote($attrib) . '=([\'"])?((?(1).+?|[^\s>]+))(?(1)\1)/is'; 
     if (preg_match($re, $tag, $match)) 
     { 
      return urldecode($match[2]); 
     } 
     return false; 
    }; 

    $output; // Get all meta tags. 
    preg_match_all("|<meta[^>]+name=\"([^\"]*)\"[^>]" . "+content=\"([^\"]*)\"?[^>]+>|i", $html, $output, PREG_PATTERN_ORDER); 
    $output = $output[0]; 
    // Get specified mata tag's content value. 
    foreach($output as $tag) 
    { 
     if($meta_name == trim($get_attribute_value("name", $tag))) 
     { 
      return $get_attribute_value("content", $tag); 
     } 
    } 

    return false; 
} 

これは、生のHTML(好ましくは解析された)を取り、そしてメタタグ自体を取得するために正規表現を使用して、そのから、あなたが望むメタタグからコンテンツ値を抽出します。

しかし、私のようにXML文書を正常に追加するには、具体的に "textContent"を使用する必要があります。ここでそれ以上のこと:PHP: DOMNode - Manual

関連する問題