-3

自分のページの 1 つで、dom からメタ ディスクリプションをその場で変更/更新しようとしています。だから私は次の方法を試しました、

libxml_use_internal_errors(true); //I'm not sure this is helpful
$xpath = new DOMXPath($dom); 
$name = 'desciption';
$query = '/html/head/meta[@name=\''.$name.'\']/@content';
$contents = $xpath->query($query);
echo $contents->item(0)->value; //blank :(

ここでは、メタ ディスクリプションのコンテンツ値を取得できません。

  • 確認htmlspecialchars($dom)しましたが、正しいようです。
  • ページのビューソースを確認しました & 説明は html->head->meta タグ (ページの head タグのペーストビン) にあります。

ここで何が問題になるのか、誰でも私を助けることができますか? クエリに何か問題がありますか?

4

1 に答える 1

3

コメントで明確にならないので、例を投稿しましょう。

ファイルを作成しましたhtml.html

<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta name="description" content="some content">
    </head>
    <body>
        <div>TODO write content</div>
    </body>
</html>

そしてphp:

<?php
$file = "html.html";
$dom = new DOMDocument();
$dom->loadHTMLFile($file);
$xpath = new DOMXPath($dom); 
$name = 'description';
$query = '/html/head/meta[@name="'.$name.'"]/@content';
$contents = $xpath->query($query);
echo $contents->item(0)->value;
?>

そして、出力はsome content

最初の二重引用符の後に単一引用符を閉じる必要があるため、それらは引用符で囲まれた文字列に保持されます。次に、変数を配置し、引用符で囲み、再度二重引用符を付けます

編集:

投稿されたサイトの HTML を使用しました:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<style type="text/css" media="screen">
<!--
#qm0 {position:relative;}
                    #qm0 a {display:block; white-space:nowrap; }
                    #qm0 div a {float:none;}
                    #qm0 div {visibility:hidden;position:absolute;}
                    #qm0 a {float: left; }
-->
</style>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>Product1 Name</title>
<link href="n-defaultStyle.css" rel="stylesheet" type="text/css">
<meta http-equiv="pragma" content="no-cache">
<meta name="keywords" content=" Ilmfpnv, VrbfZgj, Fsikeprr Mluw">
<meta name="description" content="Beu Urb Hcsmihnurb cl c avlqclb ZtatcZq nrbc in unidrdpt cft mbvfp kj rmi isspulu. Uqwoiab in sf upq lkspuj jZ oed diirovs">
</head>

それでも問題はありません。出力は次のとおりです。

Beu Urb Hcsmihnurb cl c avlqclb ZtatcZq nrbc in unidrdpt cft mbvfp kj rmi isspulu. Uqwoiab in sf upq lkspuj jZ oed diirovs

于 2013-06-26T12:51:15.107 に答える