DOMDocument是指封装DOM(文档对象模型)的类。各种语言和技术对此PHP,COM,C ++,ActiveX使用名称DOMDocument
我如何结合日期td和td时间td。这可能吗? $ html = << 日期 td1
我有以下字符串:[[[[]]]]]]]]]] 这可以通过适当的HTML解析器轻松完成。 PHP具有DOMDocument,可以将X / HTML解析为 Document Object Model,然后可以根据需要进行操作。 解决此问题的技巧是能够递归地遍历DOM树,找出每个节点,并替换不需要的节点。为此,我通过在此处扩展DOMDocument编写了一个简短的辅助方法... DOMDocument 输出: 一些文字内容 span> span> 有关修改HTML文档的更通用方法,请查看XSLT(可扩展样式表语言转换)。 PHP具有XSLT库。 然后,您将拥有一个XML文档,其中包含您的转换规则: $html = <<<'HTML' <span style="font-size: 13px;"> <span style=""> <span style=""> <span style="font-family: Roboto, sans-serif;"> <span style=""> Some text content </span> </span> </span> </span> </span> HTML; class MyDOMDocument extends DOMDocument { public function walk(DOMNode $node, $skipParent = false) { if (!$skipParent) { yield $node; } if ($node->hasChildNodes()) { foreach ($node->childNodes as $n) { yield from $this->walk($n); } } } } libxml_use_internal_errors(true); $dom = new MyDOMDocument; $dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); $keep = $remove = []; foreach ($dom->walk($dom->childNodes->item(0)) as $node) { if ($node->nodeName !== "span") { // we only care about span nodes continue; } // we'll get rid of all span nodes that don't have the style attribute if (!$node->hasAttribute("style") || !strlen($node->getAttribute("style"))) { $remove[] = $node; foreach($node->childNodes as $child) { $keep[] = [$child, $node]; } } } // you have to modify them one by one in reverse order to keep the inner nodes foreach($keep as [$a, $b]) { $b->parentNode->insertBefore($a, $b); } foreach($remove as $a) { if ($a->parentNode) { $a->parentNode->removeChild($a); } } // Now we should have a rebuilt DOM tree with what we expect: echo $dom->saveHTML(); 然后是您的PHP: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" indent="yes"/> <!-- remove spans with empty styles --> <xsl:template match="*[@style and string-length(./@style) = 0]"> <xsl:apply-templates /> </xsl:template> <!-- catch all to copy any elements that aren't matched in other templates --> <xsl:template match="*"> <xsl:copy select="."> <!-- copy the attributes of the element --> <xsl:copy-of select="@*" /> <!-- continue applying templates to this element's children --> <xsl:apply-templates select="*" /> </xsl:copy> </xsl:template> </xsl:stylesheet> XSLT在这种情况下非常强大,您可以为父/兄弟关系设置各种规则,并相应地修改属性和内容。
我有一个文档的节点。我想将该节点转换为新文档的根节点。我能想到的唯一方法是:Node node = someChildNodeFromDifferentDocument; ...
这里建议了两种方法来获取DOMDocument节点的外部HTML:如何返回DOMDocument的外部HTML?我对为什么它们似乎对HTML实体区别对待感兴趣。 ...
我对javascript有点熟悉,我正在尝试学习窗口,文档等对象的所有属性和方法。我的问题与resizeBy,resizeTo,moveTo,moveBy.I等方法有关。
奇怪且疯狂的PHP错误,清除浏览器历史记录后页面加载导致脚本多次运行
[基本上,我正在为一个大学项目创建一个php框架,除了一个奇怪的错误,使所有PHP SESSION代码在请求生命周期后重复之外,其他所有操作均正常。我已经编辑了我的...
MSXML2.DOMDocument.6.0“ MultipleErrorMessages”属性名称无效
我正在尝试使用OLE Variants在Embarcadero C ++ Builder 10.1 Berlin中进行XML验证。我的最终目标是显示所有验证错误,而不是仅显示第一个(遵循此MSDN示例)...
我想使用XPath从a-tag获取href属性,但是在同一文件中有两次出现。我过得怎么样我需要检查是否有一个值为$ street / ...的href属性。
我有示例代码: Tàikhoảncủaquýkháchđãđượcghinợ/ ghicóvớinhữngthöngtin sau: [ 您所写的问题不清楚。如果您有包含<div id="modal-body-3">且包含任意HTML的HTML的文本,并且要提取该HTML,则这是在 client side : 上执行此操作的一种方法 let HTML = `<div id="modal-body-3" class="modal-body"> <p class="text">Tài khoản của quý khách đã được ghi nợ/ghi có với những thông tin sau:</p> <div class="modal-row first"> <div class="modal-label">Ngày giao dịch</div> <div class="modal-controls"><span class="transaction-date">21/12/2019</span><span class="transaction-time">09:38:07</span></div> </div> <div class="modal-row"> <div class="modal-label">Ngày hạch toán</div> <div class="modal-controls">21/12/2019 09:38:07</div> </div> </div>` let el = document.getElementById("html"); el.innerHTML = HTML; // store HTML into the DOM el = document.getElementById('modal-body-3'); // get the text of what this encloses let inner = el.innerHTML.trim(); console.log(inner); <div id="html" style="display: none;"></div>
我正在尝试使用PHP将一些html标记转换为自定义标记。我一直在尝试使用DOMDocument,但发现它非常繁琐。有没有简单的方法可以在PHP / DOMDocument中做到这一点? ...
我有一个使用属性列表生成Word文档的程序://打开docx(是zip)。 $ zip = new ZipArchive();如果($ zip-> open($ fileName,ZIPARCHIVE :: ...
我想生成标头中版本为1.1的xml文件,因为在解析1.0版的xml文件时出现了SaxparserExceptions:“字符引用”“是无效的XML字符”。 ...
DOMDocument DOMXpath存储属性,例如php中的唯一ID
我想检测dom结构的差异并比较节点。因此,我为每个DOMElement / DOMText对象设置了一个特殊的对象属性“ uniqid”。这有效:
我正在尝试通过直接XPath获取元素的值,因为该元素没有ID。 $ dom =新的DOMDocument(); @ $ dom-> loadHTML($ rawHTML); $ finder =新的DOMXPath($ dom); //效果很好$ ...
我正在尝试使我的PHP更新现有的XML文件,但是它不能完全支持它。 PHP代码假定在xml文件的根元素内添加一个带有元素的子节点。 ...
根元素具有名称空间声明,例如xmlns:xlink =“ http://www.w3.org/1999/xlink” ...因此,任何附加的节点(例如appendChild)都将接受该名称空间。我可以附加
如何将Robots.txt策略应用于我的PHP DOMDocument Web Scrapper,并使用RollingCurlX一次抓取多个URL?
我的基本Web爬网程序使用DOMDocument和file_get_contents来爬网URL。问题在于它不遵守Robots.txt的政策,该政策旨在不抓取链接或具有“已禁用”的URL ...