我正在尝试从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)
&这似乎是正确的。任何人都可以帮我解决这里的问题吗?我的查询有什么问题吗?
答案 0 :(得分:3)
对我来说,当用双引号引用alue时,让我们发一个例子,因为它在评论中没有说清楚。
我创建了一个文件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