如果您对如何将HTML插入PHPDOMNode?感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于如何将HTML插入PHPDOMNode?的详细内容,我们还将为您解答如何在ht
如果您对如何将HTML插入PHP DOMNode?感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于如何将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)
- AngularJS:将HTML插入视图
- c# – 如何将HtmlDocument保存到内存中? Html敏捷包
- HTML DOM 节点介绍(nodeName,nodeValue,nodeType)_html/css_WEB-ITnose
- html – PHP DomNode-> insertBefore()
如何将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插入视图
这来自于将不一致的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>
<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敏捷包
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 三个属性的作用和取值不是很清楚。下面整理的信息包含有关于节点的详细信息,供参考。
节点信息
每个节点都拥有包含着关于节点某些信息的属性。这些属性是:
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()
我的目标是在每个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
解决方法
假设您想要使用锚点添加所有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()等相关知识的信息别忘了在本站进行查找喔。
本文标签: