使用 php 将“<”插入到 html 文件中

Posted

技术标签:

【中文标题】使用 php 将“<”插入到 html 文件中【英文标题】:Insert " < " into html file using php 【发布时间】:2017-01-30 16:51:50 【问题描述】:

有没有办法可以使用 phphtml 文件中插入 &amp;lt;&gt;。这是部分代码

<?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); 

问题是我使用上述方法得到&amp;lt;,而我想要&amp;lt;

编辑: 完整代码:

    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 DOM 方法拥有 &gt;&amp;lt;,它正在使用 createTextNode() 方法。

【问题讨论】:

html_entity_decode.. 使用这个php内置函数... $test = $dom-&gt;createTextNode("&lt;?php echo html_entity_decode($custom_tag); ?&gt;"); 它不工作。也许函数在插入 html 文件之前必须自己工作? 您是否尝试预生成模板? 我认为生成带有 PHP 代码的模板通常是个坏主意,请记录在案。现在,继续…… 【参考方案1】:

最初的问题似乎是关于如何使用 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 标记。请注意,定义是可选的,即可以以更直接的方式编码&lt;?php echo "&lt;"; ?&gt;,而不是诉诸使用 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 名副其实的创建文本而不是 HTML,即浏览器只会将右角和左角字符解释为文本,没有任何附加含义。

【讨论】:

【参考方案2】:

如果我理解正确,我认为您可以首先使用 。它们应该呈现为 HTML。可能会为您节省一些编码。让我知道它是否有效。

【讨论】:

以上是关于使用 php 将“<”插入到 html 文件中的主要内容,如果未能解决你的问题,请参考以下文章

PHP 表单未插入 mySQL 数据库

如何使用 python 将字典值插入到 html 模板文件中?

如何使用 jquery html 和 php 将标签插入数据库

如何使用 PHP 将附件插入 Access 数据库?

使用 html 表单将数据插入到 wordpress 表中

如何将 php 代码插入 HTML 中的短代码?