domdocument 相关问题

DOMDocument是指封装DOM(文档对象模型)的类。各种语言和技术对此PHP,COM,C ++,ActiveX使用名称DOMDocument

为什么我不能用dom \ htmldocument搜索标签?

我正在尝试使用php 8.4中的新事物。 llet说我只需要计算所有divs: Dom\HtmlDocument 您可以看到,当我使用<?php $html = <<<HTML <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Example</title> </head> <body> <div>Hello</div> </body> </html> HTML; $doc = Dom\HTMLDocument::createFromString($html); $xpath = new Dom\XPath($doc); // No divs found: $divs = $xpath->query('//div'); echo $divs->count(); // 0 // 6 elements found, including the div: $anyTags = $xpath->query('//*'); echo $anyTags->count(); // 6 抓住任何元素时,它可以按预期工作,甚至找到了DIV。 为什么我不能使用标签选择器?我尝试了一些带有classNames等的高级选择器等。只要我使用*而不是特定的标签,它可以正常工作。 默认,*在名称空间Dom\HTMLDocument::createFromString创建所有节点。因此,如果您想通过XPATH查询该查询,则需要进行基于名称空间的查询,例如 http://www.w3.org/1999/xhtml 如果您想要未命名的html(如99%的用例中),请将 $xpath->registerNamespace('xhtml', 'http://www.w3.org/1999/xhtml'); $divs = $xpath->query('//xhtml:div'); : Dom\HTML_NO_DEFAULT_NS

回答 1 投票 0


要php domdocument()和createElement(functions)智能?你能把孩子添加到秩序中吗?

创建您的domdocument是可以接受的,然后用createElement()创建许多元素,而不是随机顺序用附录填充元素,然后当您转到OUTP ...

回答 1 投票 0

如何让 HTML5 与 DOMDocument 配合使用?

我正在尝试使用 DOMDocument 解析 HTML 代码,对其进行更改等操作,然后将其组装回发送到输出的字符串。 但是有一些关于解析的问题,这意味着......

回答 6 投票 0

如何在 PHP 8.4.3 中使用 DomDocument 的 querySelector?

根据 https://www.php.net/manual/en/dom-parentnode.queryselector.php Dom\ParentNode::querySelector 在 PHP >= 8.4.0 中受支持。据此,我认为以下代码将...

回答 1 投票 0

如何使用 DOMDocument 删除标签名称但保留内部 html 内容

我有一个格式非常糟糕的html,感谢MS Word 10“另存为htm,html”。这是我正在尝试清理的内容的示例。 我有一个格式非常糟糕的 html,感谢 MS Word 10“另存为 htm、html”。这是我正在尝试清理的示例。 <html xmlns:v="urn:schemas-microsoft-com:vml"... other xmlns> <head> <meta tags, title, styles, a couple comments too (they are irrelevant to the question)> </head> <body lang=EN-US link=blue vlink=purple style='tab-interval:36.0pt'> <div class=WordSection1> <h1>Pros and Cons of a Website</h1> <p class=MsoBodyText align=left style='a long irrelevant list'><span style='long list'><o:p>&nbsp;</o:p></span></p>(this is a sample of what it uses as line breaks. Take note of the <o:p> tag). <p class=MsoBodyText style='margin-right:5.75pt;line-height:115%'> A<span style='letter-spacing:.05pt'> </span>SAMPLE<span style='letter-spacing:.05pt'> </span>TEXT </p> </div> <div class=WordSection2>...same pattern in div 1</div> <div class=WordSection3>...same...</div> </body> </html> 我从这一切中需要的是: <div>...A SAMPLE TEXT</div> <div>...same pattern in div 1</div> <div>...same...</div> 到目前为止我所拥有的: $dom = new DOMDocument; $dom->loadHTML($filecontent, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); $xpath = new DOMXPath($dom); $body = $xpath->query('//html/body'); $nodes = $body->item(0)->getElementsByTagName('*'); foreach ($nodes as $node) { if($node->tagName=='script') $node->parentNode->removeChild($node); if($node->tagName=='a') continue; $attrs = $xpath->query('@*', $node); foreach($attrs as $attr) { $attr->parentNode->removeAttribute($attr->nodeName); } } echo str_ireplace(['<span>', '</span>'], '', $dom->saveHTML($body->item(0))); 它给了我: <body lang="EN-US" link="blue" vlink="purple" style="tab-interval:36.0pt"> <div> <h1>Pros and Cons of a Website</h1> <p><p> </p></p> <p>A SAMPLE TEXT</p> </div> <div>...same pattern in div 1</div> <div>...same...</div> </body> 我很擅长,但我想去掉身体标签。我也想要 h1,它的内容也出来了,但是当我说: if($node->tagName=='script' || $node->tagName=='h1') $node->parentNode->removeChild($node); 奇怪的事情发生了: <p><p> </p></p> becomes <p class="MsoBodyText" ...all those very long stuff I was trying to remove in the first place><p> </p></p> 我遇到了一些非常好的答案,例如: 如何获取 DOMNode 的innerHTML?(Haim Evgi 的答案,我不知道如何正确实现它,Keyacom 的答案也是),Marco Marsala 的答案是我得到的最接近的答案,但 div 都保留了它们的类。 您可以从 div 元素中提取文本,然后将所有多个空格替换为一个空格以将其清理干净。 演示:https://3v4l.org/VpIEq libxml_use_internal_errors(true); $doc = new DomDocument(); $doc->loadHTML($html); foreach ($doc->getElementsByTagName('div') as $div) { $raw = $div->textContent; $text = trim(preg_replace('/\s+/', ' ', $raw)); var_dump($text); } 最终会像这样 string(115) "Pros and Cons of a Website  (this is a sample of what it uses as line breaks. Take note of the tag). A SAMPLE TEXT" string(24) "...same pattern in div 1" string(10) "...same..." string(115) "Pros and Cons of a Website  (this is a sample of what it uses as line breaks. Take note of the tag). A SAMPLE TEXT" string(24) "...same pattern in div 1" string(10) "...same..."

回答 1 投票 0

DOMDocument 忽略未知实体

我正在尝试对我的 API 响应实现 XML 签名,但我遇到了一个问题,由于它具有“未知”XML 实体(例如 ä 和其他转换.. .

回答 1 投票 0

DTD 使用 MSXML2.DOMDocument60 加载 XML 时出错

我已经开发了一系列使用 MSXML2.DOMDocument60 处理 xml 文件的函数。但是,当我尝试使用下面的代码加载 html 页面时,我收到一条错误消息 “DTD 不是

回答 2 投票 0

使用 PHP 解析动态加载的 HTML

我正在尝试解析来自网络网址的数据。但是,相关 URL 似乎会在浏览器加载时动态加载内容。 到目前为止我已经尝试了几件事: $dom = 新的 DOMDocument; $dom...

回答 1 投票 0

根据 XSD 验证 XML 时出现问题 - PHP/schemaValidate

我正在尝试使用 DOMDocument 中的函数 schemaValidate(String file) 根据 XSD 验证 XML 文件。 当我在其他工具(例如在线验证器)上验证它时,它工作正常,但在我的

回答 3 投票 0

如何从 DOMDocument() 中的 div 中删除文本

我有一个 html 字符串,其中包含一些 div 中的文本。我需要从 div 中提取该文本。 (出于好奇,当用户复制/粘贴到可内容编辑的文件中时,这些额外的 div 就会出现......

回答 1 投票 0

Wordress 从正文中过滤整个内容,包括模板和结构

Wordpress 有一个用于过滤帖子或页面内容的钩子; add_filter('the_content' fn() => // 某事); 这会过滤帖子内容并允许我们修改它/操作 DOM e...

回答 1 投票 0

XSLTProcessor::transformToUri():内存分配失败:达到任意 MAX_URI_LENGTH 限制

我有一些 XML 文件需要在 Html 中“转换”并显示在屏幕上。 我使用 DOMDocument 和 XSLTProcessor 开发了一个几乎在任何时候都可以工作的简单脚本。 亲...

回答 2 投票 0

防止 DOMDocument::loadHTML() 转换实体

我有一个字符串值,我正在尝试为其提取列表项。 我想提取文本和任何子节点,但是,DOMDocument 正在将实体转换为字符,而不是留下...

回答 4 投票 0

PHP DOMDocument 添加额外标签

我正在尝试解析文档并获取所有图像标签并更改不同的源。 $domDocument = new DOMDocument(); $domDocument->loadHTML($text); $imageNodeList = $

回答 6 投票 0

php DOMElement->replaceWith() 的奇怪问题

我看到一些奇怪的行为,但我无法调试。该代码来自 WordPress 短代码变体的简单实现。 代码循环遍历 DOMNodeList(自定义...

回答 1 投票 0

使用多个命名空间创建 XML 时的冗余 XMLNS 属性

我的代码: $xmlns = [ 'xmlns' => 'http://www.w3.org/2000/xmlns/', 'rsm' => 'urn:un:unece:uncefact:数据:标准:CrossIndustryInvoice:100', 'ram' => '瓮:un:unece:uncfact...

回答 1 投票 0

document.getSelection 返回的对象中的anchorNode、baseNode、extentNode、focusNode 是什么?

如果我在 html 页面中进行选择,我会执行以下操作: var a = document.getSelection() 我得到一个具有四个属性的对象: 锚节点 基节点 范围节点 焦点节点 前三个值是

回答 5 投票 0

如何防止 PHP 在将子 XML 导入另一个 XML 时添加默认命名空间前缀

我正在使用 PHP 8.2,需要将 XML 节点从一个文档导入到另一个文档,而 PHP 不会自动添加“默认”命名空间前缀。这打破了数字签名......

回答 1 投票 0

如何通过 html 源中的 <script> 标签从网页中抓取数据。 (PHP)

我想从网页中检索一些数据项。 网页链接: http://www.walmart.com/storeLocator/ca_storefinder_results.do 我想要检索的数据项。 $商店电话 $药房电话 $

回答 2 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.