DOMDocument是指封装DOM(文档对象模型)的类。各种语言和技术对此PHP,COM,C ++,ActiveX使用名称DOMDocument
Php DomDocument saveXML 更改标签闭包标准
我必须解析 XML 文件,这些文件有一些像这样 和其他像这样 关闭的标签。我需要保持标签关闭与原始文件相同,那里...
当我想测试 php 数组时,我使用以下代码 print_r($myarray); 但知道我想查看对象的数据 我的目标是 $xpath = new DOMXPath($doc); $myobject = $xpath->
我想向我的站点添加一个 FAQPage 架构。 为此,我需要找到每个带有问号的 或 标签。这就是问题所在。 之后我需要第一个 ... 我想添加一个 FAQPage 架构 到我的网站。 为此,我需要找到每个带有问号的 <h2> 或 <h3> 标签。这就是问题所在。 之后我需要标题后的第一个<p>标签作为答案。 最终结果应该是这样的: { "@type": "Question", "name": "How long does it take to process a refund?", "acceptedAnswer": { "@type": "Answer", "text": "CONTENT FROM FIRST P-TAG", "url": "https://www.example.com/answer#anchor_link" } } 问题的"name"是<h2>或<h3>标签。 答案的"url"是永久链接和来自<h2>或<h3>标签的锚链接。 这两个参数就解决了 不幸的是,我无法弄清楚如何在标题标签之后获取第一个段落标签。 我需要下一行第一段的内容: "text": "CONTENT FROM FIRST P-TAG", 到目前为止,这是我当前的代码: <?php $content_postid = get_the_ID(); $content_post = get_post($content_postid); $content = $content_post->post_content; $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content); libxml_use_internal_errors(true); $dom = new DOMDocument; $dom->loadHTML('<?xml encoding="utf-8" ?>' . $content); $xp = new DOMXPath($dom); $query = "//h2[contains(., '?')] | //h3[contains(., '?')]"; $nodes = $xp->query($query); $stack = []; if ($nodes) { $faq_count = count($nodes); $faq_i = 1; echo ' <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": ['; foreach($nodes as $node) { echo '{ "@type": "Question", "name": "'.$node->nodeValue.'", "acceptedAnswer": { "@type": "Answer", "text": "CONTENT FROM FIRST P-TAG", "url": "'.get_permalink().'#'.$node->getAttribute('id').'" } }'; if ($faq_i != $faq_count) : echo ','; endif; $faq_i++; } echo ']}</script>'; } ?> 如您所见,我正在使用这一行来查找每个带有<h2>的<h3>或?标签: $query = "//h2[contains(., '?')] | //h3[contains(., '?')]"; 我想我需要第二个$query才能找到标题后的parapgrah?但是如何检查标题后的第一个标签? 我试过这个额外的查询: $query2 = "//h2[contains(., '?')]/following-sibling::p[1] | //h3[contains(., '?')]/following-sibling::p[1]"; 但是following-sibling::和following::都不适合我。 它总是显示最后一个标题之后的段落。 我需要解决第一个查询吗?想知道我是什么水平? 这是一个$content_post的例子(它总是不同的): <h2>Lorem ipsum dolor sit amet?</h2> <p>consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim</p> <p>veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p> <h3>Duis autem vel eum?</h3> <p>iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.</p> <h2>Nam liber tempor cum soluta?</h2> <h3>nobis eleifend option congue nihil</h3> <p>imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</p> <p>Et wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p> <h3>Duis autem vel?</h3> <p>eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.</p> <h4>Nam liber tempor cum soluta nobis</h4> <p>eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.</p>
WordPress:在 <p> 标签后找到第一个 <h2> 并添加提取的前 150 个字符
我想向我的站点添加一个 FAQPage 架构。为此,我需要找到每个 标签和它后面的第一个 标签。 最终结果应如下所示: { "@type": " 我想在我的网站上添加一个 FAQPage 架构。为此,我需要找到每个 <h2> 标签和它后面的第一个 <p> 标签。 最终结果应该是这样的: { "@type": "Question", "name": "How long does it take to process a refund?", "acceptedAnswer": { "@type": "Answer", "text": "The first 150 chars from the first <p> tag", "url": "https://www.example.com/answer#anchor_link" } } 问题的"name"是<h2>标签。 答案的"url"是永久链接和<h2>标签的锚链接。 这两个参数就解决了 不幸的是,我无法弄清楚如何在<p>标签之后获得第一个<h2>标签。 到目前为止,这是我当前的代码: <?php $content_postid = get_the_ID(); $content_post = get_post($content_postid); $content = $content_post->post_content; $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content); libxml_use_internal_errors(true); $dom = new DOMDocument; $dom->loadHTML('<?xml encoding="utf-8" ?>' . $content); $xp = new DOMXPath($dom); $query = '//*[contains("h2", name())]'; $nodes = $xp->query($query); $currentLevel = ['level' => 0, 'count' => 0]; $stack = []; if ($nodes) { $faq_count = count($nodes); $faq_i = 1; echo ' <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": ['; foreach($nodes as $node) { $level = (int)$node->tagName[1]; while($level < $currentLevel['level']) { $currentLevel = array_pop($stack); } if ($level === $currentLevel['level']) { $currentLevel['count']++; } else { $stack[] = $currentLevel; $currentLevel = ['level' => $level, 'count' => 1]; } echo '{ "@type": "Question", "name": "'.$node->nodeValue.'", "acceptedAnswer": { "@type": "Answer", "text": "TEST <a href='.get_permalink().'#'.$node->getAttribute('id').'>more</a>", "url": "'.get_permalink().'#'.$node->getAttribute('id').'" } }'; if ($faq_i != $faq_count) : echo ','; endif; $faq_i++; } echo ']}</script>'; } ?> 如你所见,我正在使用这条线来查找每一个<h2>: $query = '//*[contains("h2", name())]'; 我想我需要第二个$query来找到<p>标签。但是我如何检查<h2>之后的第一个标签? 如何将前 150 个字符添加到此行而不是TEST: "text": "TEST <a href='.get_permalink().'#'.$node->getAttribute('id').'>more</a>", 我在这里找到了一个answer,它与childNodes一起使用。也许这可能是一个解决方案? 这个答案也很有帮助。我试着做这样的事情: foreach($nodes as $n) { $p_text = $xp->query('following::p', $n)->item(0)->nodeValue; // only the first 150 chars $p_text_out = mb_strlen($p_text) > 150 ? mb_substr($p_text,0,150)."..." : $p_text; } following::p有点……但它总是第一个<p>标签。
DOMDocument::loadHTML():警告 - htmlParseEntityRef:实体中没有名称
我发现了几个类似的问题,但到目前为止,没有一个能够帮助我。 我试图在一个 HTML 块中输出所有图像的“src”,所以我使用的是 DOMDocument()。这种方法是...
我使用 PHP DomDocument 类从 3000 多个帖子中提取所有 a 标签,并将它们收集在数据库中,如下所示 - 我使用 domDocument C14N() 函数来填充 existing_link 表。 编号 |
获取PHP DOMDocumentFragment的nodeValue?
有谁能告诉我如何获得任何PHP DOMDocumentFragment的nodeValue?或者是否有可能把这个对象转换成节点,这样我就可以得到值了?有什么建议吗?谅谅
我使用PHP DOMDocument()来生成包含元素的XML文件。我正在将所有的细节附加到样本xml文件的组件标签中。但是没有出现关闭标签。我想创建收尾标签。...
PHP DomDocument - 为什么en破折号"-"转换为-"
我正在使用DOMDocument来提取一些段落。以下是我的初始htm文件的样子。
如何用胡子表情替换文档中的img src和link href?
我试图替换src,href值,但用一个小的修改,使用regex简单的例子/Find。 /替换为:
php DOMDocument()->getAttribute()没有工作。
我想从HTML中的一个字符串中获取一个标签的href属性值。因为字符串太长,我在这里做了一个PHP手脚。错误:PHP解析错误:语法错误,意外。PHP解析错误:语法错误,意外的'...'。
我需要使用DOMDocument来制作报表。由于页面会有所不同(3到30页之间),我想使用for-loop创建这些页面(数量由一个变量定义)。制作...
PHP DomDocument appendChild到根结尾
我有这样的XML格式 [[[foo 1 bar ]]] $dom->documentElement->appendChild($newthing); 从PHP manual: documentElement 这是一个便捷属性,它允许直接访问作为文档的文档元素的子节点。 尝试 $dom->appendChild($dom->createElement($newthing)); 我必须完成同样的事情,并且我已经做到了这一点 $xml = simplexml_load_file("customer.xml"); foreach($xml->children() as $customer) { if($email == $customer->email) { $error = true; $message = "Email Already Exist"; break; } $id = $customer->id + 1; } $customer = $xml->addChild('customer'); $xml_id = $customer->addChild('id',$id); $xml_firstName = $customer->addChild('firstName',$firstname); $xml_lastName = $customer->addChild('lastName',$lastname); $xml_email = $customer->addChild('email',$email); $xml_password = $customer->addChild('password',$password); $xml_contactNumber = $customer->addChild('contactNumber',$contactNumber); $fp = fopen('customer.xml','w'); fwrite($fp,$xml->asXML()); fclose($fp);`[![output file][1]][1]
需要通过PHP脚本在SVG文件内使用特殊(动态)ID获取和修改组g中的第一个多边形。使用DOMDocument()和DOMXPath找不到此元素。请帮助PHP:$ svg = ...
我有一个通过PHP的XML文件,我正在尝试根据属性“ word”在div中以升序列出特定的子级“ word”。我把sort($ word);没有成功这是我的代码:&...
我正在尝试将标题,信息和时间整理到数组中。但是,我一直在获取数据。正如您在控制器中看到的那样,我使用getelementbyID来调用我的第一列表,但是它向我展示了...