如何在只有DOMDocument的情况下使用DOM在PHP中编辑head标记



只是试图编辑/修改head标记,以便在DOM和PHP中添加一些内容。

$dom = new DOMDocument();
$dom->loadHtml(utf8_decode($html), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
for($i=0; $i<count($r);$i++) 
{

// Prepare the HTML to insert
Here I want to add $var inside head tag (at the end if possible)
}
return $dom->saveHTML();

每次尝试时,由于var_dump的结果,LENGHT=0。

编辑:我不想编辑现有的标记。我想加一个新的。更具体地说,我需要为Facebook分享添加OG元标签。

按要求编辑2:

之前

<head>
<meta blabla>
<title></title>
</head>
<body>
<h1></h1>
</body>

之后

<head>
<meta blabla>
<title></title>
<meta new1>
</head>
<body>
<h1></h1>
</body>

但需要通过PHP中的DOMDocument进行编辑。。。

将其添加到文件顶部:

<?php 
$var = "Hello world.";
?>

然后启动HTML并将其添加到那里。

<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= $var ?></title>
</head>
<body>

</body>
</html>

如果你想用PHP做这件事,你可以尝试使用:

$titles = $domDocument->getElementsByTagName('title');
foreach($titles as $key => $title){
$title->setAttribute('attribute', 'value')
}

编辑来源:https://stackoverflow.com/a/3195048/12077975

尝试以下方法:

$before= 
'<html>
<head>
<meta name="old"/>
<title></title>
</head>
<body>
<h1></h1>
</body>
</html>
';
$HTMLDoc = new DOMDocument();
$HTMLDoc->loadHTML($before, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD );   
$xpath = new DOMXPath($HTMLDoc);
$destination = $xpath->query('//head/title');
$template = $HTMLDoc->createDocumentFragment();
$template->appendXML('<meta name="new"/>');
$destination[0]->parentNode->insertBefore($template, $destination[0]->nextSibling);
echo $HTMLDoc->saveHTML();

输出:

<html>
<head>
<meta name="old">
<title></title><meta name="new">
</head>
<body>
<h1></h1>
</body>
</html

最新更新