有没有办法可以使用PHP在HTML文件中插入<
或>
。这是代码的一部分
<?php
$custom_tag = $searchNode->nodeValue = "<";
$custom_tag = $searchNode->setAttribute("data-mark", $theme_name);
$custom_tag = $dom->saveHTML($searchNode);
$root = $searchNode->parentNode;
$root->removeChild($searchNode);
$test = $dom->createTextNode("<?php echo '$custom_tag'; ?>");
$root->appendChild($test);
$saved_file_in_HTML = $dom->saveHTML();
$saved_file = htmlspecialchars_decode($saved_file_in_HTML);
file_put_contents("test.html", $saved_file);
问题是我使用上述方法获得<
,我希望<
。
修改 完整代码:
if($searchNode->hasAttribute('data-put_page_content')) {
$custom_tag = $searchNode->nodeValue = "'; \$up_level = null; \$path_to_file = 'DATABASE/PAGES/' . basename(\$_SERVER['PHP_SELF'], '.php') . '.txt'; for(\$x = 0; \$x < 1; ) { if(is_file(\$up_level.\$path_to_file)) { \$x = 1; include(\$up_level.\$path_to_file); } else if(!is_file(\$up_level.\$path_to_file)) { \$up_level .= '../'; } }; echo '";
$custom_tag = $searchNode->setAttribute("data-mark", $theme_name);
$custom_tag = $dom->saveHTML($searchNode);
$root = $searchNode->parentNode;
$root->removeChild($searchNode);
$test = $dom->createTextNode("<?php echo '$custom_tag'; ?>");
$root->appendChild($test);
$saved_file_in_HTML = $dom->saveHTML();
$saved_file = htmlspecialchars_decode($saved_file_in_HTML);
file_put_contents("../THEMES/ACTIVE/". $theme_name ."/" . $trimed_file, $saved_file);
copy("../THEMES/ACTIVE/" . $theme_name . "/structure/index.php", "../THEMES/ACTIVE/" . $theme_name ."/index.php");
header("Location: editor.php");
}
最终编辑:
如果您希望使用PHP DOMs方法>
或<
,则可以使用createTextNode()
方法。
答案 0 :(得分:0)
原始问题似乎涉及如何使用PHP制作HTML标记,因此我将解决该问题。虽然使用htmlentities()是个好主意,但您还需要注意,它的主要目的是保护您的代码,以便恶意用户不会使用javascript或其他可能产生安全问题的标记注入它。在这种情况下,生成HTML的唯一方法是创建HTML,PHP提供至少三种方法来完成这一壮举。
您可以编写如下代码:
<?php
define("LF_AB","<");
define("RT_AB",">");
echo LF_AB,"div",RT_AB,"\n";
echo "content\n";
echo LF_AB,"/div",RT_AB,"\n";
代码生成带有一些最小内容的开始和结束div标签。注意,定义是可选的,即可以用更简单的方式<?php echo "<"; ?>
编码,而不是使用define()来生成左角标记字符。
但是,如果有人担心以这种方式生成HTML,那么您也可以使用html_entity_decode:
<?php
define("LF_AB",html_entity_decode("<"));
define("RT_AB",html_entity_decode(">"));
echo LF_AB,"div",RT_AB,"\n";
echo "content\n";
echo LF_AB,"/div",RT_AB,"\n";
此示例将html_entity_decode的参数视为无害的HTML实体,然后将它们分别转换为HTML左右角字符。
或者,你也可以利用PHP的DOM,即使是现有的HTML页面,如下所示:
<?php
function displayContent()
{
$dom = new DOMDocument();
$element = $dom->createElement('div', 'My great content');
$dom->appendChild($element);
echo $dom->saveHTML();
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<style>
div {
background:#ccbbcc;
color:#009;
font-weight:bold;
}
</style>
</head>
<body>
<?php displayContent(); ?>
</body>
</html>
注意:Dom方法createTextNode true为其名称创建文本而不是HTML,即浏览器只会将右角和左角字符解释为文本而没有任何其他含义。
答案 1 :(得分:-1)
如果我理解正确,我认为你可以使用&lt;和&gt;首先。它们应该呈现为HTML。可能会为您节省一些编码。如果有效,请告诉我。