GVKun编程网logo

如何将HTML插入PHP DOMNode?(如何在html中嵌入php)

23

本文将介绍如何将HTML插入PHPDOMNode?的详细情况,特别是关于如何在html中嵌入php的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于A

本文将介绍如何将HTML插入PHP DOMNode?的详细情况,特别是关于如何在html中嵌入php的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于AngularJS:将HTML插入视图、c# – 如何将HtmlDocument保存到内存中? Html敏捷包、HTML DOM 节点介绍(nodeName,nodeValue,nodeType)_html/css_WEB-ITnose、html – PHP DomNode-> insertBefore()的知识。

本文目录一览:

如何将HTML插入PHP DOMNode?(如何在html中嵌入php)

如何将HTML插入PHP DOMNode?(如何在html中嵌入php)

有什么方法可以将HTML模板插入到现有DOMNode中,而无需对内容进行编码?

我试图做到这一点:

$dom->createElement(''div'', ''<h1>Hello world</h1>'');$dom->createTextNode(''<h1>Hello world</h1>'');

输出几乎相同,唯一的区别是第一个代码会将其包装在div中。我试图从字符串加载HTML,但是我不知道如何将其主体内容附加到另一个DOMDocument中。

在javascript中,此过程似乎非常简单明显。

答案1

小编典典

它与另一个DOMDocument一起用于解析HTML代码。但是您需要先将节点导入主文档,然后才能在其中使用它们:

$newDiv = $dom->createElement(''div'');$tmpDoc = new DOMDocument();$tmpDoc->loadHTML($str);foreach ($tmpDoc->getElementsByTagName(''body'')->item(0)->childNodes as $node) {    $node = $dom->importNode($node, true);    $newDiv->appendChild($node);}

并作为方便的功能:

function appendHTML(DOMNode $parent, $source) {    $tmpDoc = new DOMDocument();    $tmpDoc->loadHTML($source);    foreach ($tmpDoc->getElementsByTagName(''body'')->item(0)->childNodes as $node) {        $node = $parent->ownerDocument->importNode($node, true);        $parent->appendChild($node);    }}

然后,您可以简单地执行以下操作:

$elem = $dom->createElement(''div'');appendHTML($elem, ''<h1>Hello world</h1>'');

AngularJS:将HTML插入视图

AngularJS:将HTML插入视图

是否可以在Angular控制器中创建一个HTML片段,并在视图中显示此HTML?

这来自于将不一致的JSON blob转换为id:value对的嵌套列表的要求。因此,HTML在控制器中创建,我现在正在寻找显示它。

我已经创建了一个模型属性,但是不能渲染这个视图中没有它只打印的HTML。

更新

似乎问题产生于角色渲染创建的HTML作为一个字符串在引号内。将试图找到一个方法围绕这个。

示例控制器:

var SomeController = function () {

    this.customHtml = '<ul><li>render me please</li></ul>';
}

示例视图:

<div ng:bind="customHtml"></div>

给予:

<div>
    "<ul><li>render me please</li></ul>"
</div>
对于Angular 1.x,在HTML中使用ng-bind-html:
<div ng-bind-html="thisCanBeusedInsideNgBindHtml"></div>

此时,您将尝试在安全上下文错误中使用不安全值,因此您需要使用ngSanitize或$sce来解决此问题。

$ sce

在控制器中使用$ sce.trustAsHtml()来转换html字符串。

$scope.thisCanBeusedInsideNgBindHtml = $sce.trustAsHtml(someHtmlVar);

ngSanitize

有2个步骤:

>包括angular-sanitize.min.js资源,例如:

>在js文件(控制器或通常是app.js)中,包括ngSanitize,例如:angular.module(‘myApp’,[‘myApp.filters’,’myApp.services’,’myApp.directives’,’ngSanitize’])

c# – 如何将HtmlDocument保存到内存中? Html敏捷包

c# – 如何将HtmlDocument保存到内存中? Html敏捷包

我正在使用 HTML Agility Pack来解析和HTML文档,对节点进行更改,然后保存HTML文档.我想将文档保存到内存中,以便稍后在应用程序中将HTML写为字符串.我当前的实现总是返回一个字符串==“”.我可以看到调试时 HtmlDocument对象不为空.有人能提供一些见解吗?

private string InitializeHtml(HtmlDocument htmlDocument)
    {
        string currentUserName = User.Identity.Name;
        HtmlNode scriptTag = htmlDocument.DocumentNode.SelectSingleNode("//script[@id ='HwInitialize']");
        scriptTag.InnerHtml = 
            string.Format("org.myorg.application = {{}}; org.myorg.application.init ={{uid:\"{0}\",application:\"testPortal\"}};",currentUserName);

        MemoryStream memoryStream = new MemoryStream();
        htmlDocument.Save(memoryStream);
        StreamReader streamReader = new StreamReader(memoryStream);
        return streamReader.ReadToEnd();
    }

解决方法

尝试

memoryStream.Seek(0,System.IO.SeekOrigin.Begin)

在创建StreamReader并调用ReadToEnd()之前

流指针很可能通过Save方法留在流的末尾(组件执行此操作的最佳做​​法是 – 如果您想要向流中附加更多数据),因此当您调用ReadToEnd时,它已经在结束,什么都没有读.

HTML DOM 节点介绍(nodeName,nodeValue,nodeType)_html/css_WEB-ITnose

HTML DOM 节点介绍(nodeName,nodeValue,nodeType)_html/css_WEB-ITnose

  对于初学者来说,html dom 里面的 nodename、nodevalue 以及 nodetype 三个属性的作用和取值不是很清楚。下面整理的信息包含有关于节点的详细信息,供参考。

节点信息

  每个节点都拥有包含着关于节点某些信息的属性。这些属性是:

nodeName(节点名称) nodeValue(节点值) nodeType(节点类型)

nodeName

  nodeName 属性含有某个节点的名称。

元素节点的 nodeName 是标签名称 属性节点的 nodeName 是属性名称 文本节点的 nodeName 永远是 #text 文档节点的 nodeName 永远是 #document

注释:nodeName 所包含的 XML 元素的标签名称永远是大写的

nodeValue

  对于文本节点,nodeValue 属性包含文本。

立即学习“前端免费学习笔记(深入)”;

  对于属性节点,nodeValue 属性包含属性值。

  nodeValue 属性对于文档节点和元素节点是不可用的。

nodeType

  nodeType 属性可返回节点的类型。

  最重要的节点类型是:

元素类型 节点类型
元素 1
属性 2
文本 3
注释 8
文档 9

 

html – PHP DomNode-> insertBefore()

html – PHP DomNode-> insertBefore()

我试图在我的html字符串中插入节点.
我的目标是在每个h2标签之前插入一个元素.

为此,我正在使用:

$htmlString = "<h2>some html</h2>";

$DOM = new DOMDocument();
$DOM->loadHTML($htmlString);

$itemTitles = $DOM->getElementsByTagName('h2');

for($i = 0; $i < $itemTitles->length; $i ++)
{
    $helpNavigatorContents[] = $itemTitles->item($i)->nodeValue;
    $textBefore = new DOMNode(
        '<a name="'.$itemTitles->item($i)->nodeValue.'"></a>'
    );
    $itemTitles->item($i)->parentNode->insertBefore(
        $textBefore,$itemTitles->item($i)
    );
}

$htmlString = $DOM->saveHTML($DOM);

在这里我遇到了$textBefore的问题.当我将$textBefore声明为DOMText时,我可以在节点之前插入文本,但是当我尝试使用DOMNode时,我收到以下错误(Demo):

Warning: DOMNode::insertBefore(): Couldn’t fetch DOMNode

解决方法

代码没有任何意义. DOMNode没有构造函数.根本不应该创建它.您应该通过DOMDocument创建特定的节点类型,以使它们与Document相关联.

假设您想要使用锚点添加所有H2元素,这是如何做到的:

libxml_use_internal_errors(true);
$DOM = new DOMDocument();
$DOM->loadHTML($htmlString);
$DOM->preserveWhiteSpace = false;

foreach ($DOM->getElementsByTagName('h2') as $h2) {
    $a = $DOM->createElement('a');
    $a->setAttribute('name',$h2->nodeValue);
    $h2->parentNode->insertBefore($a,$h2);
}
$DOM->formatOutput = true;
echo $DOM->saveHTML();

演示http://codepad.org/N0dPcLwT

要将H2元素包装到A元素中,只需执行相同操作并添加即可

$a->appendChild($h2);

演示http://codepad.org/w7Hi0Bmz

今天关于如何将HTML插入PHP DOMNode?如何在html中嵌入php的分享就到这里,希望大家有所收获,若想了解更多关于AngularJS:将HTML插入视图、c# – 如何将HtmlDocument保存到内存中? Html敏捷包、HTML DOM 节点介绍(nodeName,nodeValue,nodeType)_html/css_WEB-ITnose、html – PHP DomNode-> insertBefore()等相关知识,可以在本站进行查询。

本文标签: