当前位置: 首页 > 知识库问答 >
问题:

php,解析一个有序的HTML列表并编辑ST中的文本,而不影响周围的HTML标记

彭宏阔
2023-03-14

我试图使用PHP解析一个HTML列表,然后读取列表的内容(例如,儿童和年轻人,居民,专业人员)和标签,在列表中的每一位文本末尾附加一个“/”(除了最后一项),然后输出,而不编辑周围的任何HTML标签。

目前我已经在列表中读到了它,并添加了'/',但我正在移除周围的标记在这个过程中,谁有任何建议的方法做这件事或任何我应该使用的函数? 谢谢

<ol class="breadcrumb">
        <li class="inline odd first" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="https://my.northtyneside.gov.uk/category/75/residents" itemprop="url"><span itemprop="title">Residents</span></a></li> 
        <li class="inline even" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="https://my.northtyneside.gov.uk/category/175/children-and-young-people" itemprop="url"><span itemprop="title">Children and young people</span></a></li> 
        <li class="inline odd last" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><span itemprop="title">Professionals</span></li>
    </ol>

    <?php

    function injectSlashes($breadcrumb){

        $doc = new DOMDocument();
        $doc->loadHTML($breadcrumb);
        $liList = $doc->getElementsByTagName('li');
        $liValues = array();
        foreach ($liList as $li) {
            $liValues[] = $li->nodeValue;
        }

        $correctBreadcrumb = implode("<span aria-hidden=\"true\">/</span>",$liValues);

        return $correctBreadcrumb;
    }
?>

共有1个答案

白烨煜
2023-03-14

一个简单的解决方案是更改存储在每个项目中的数据。

目前,您使用

$liValues[] = $li->nodeValue;

正如您所发现的那样,它只是项目的文本。

要存储HTML,需要使用saveHTML()。 通常这可能是一个文档片段,但是您可以将其简化为

  • 标记中的第一个子元素。。。

    $liValues[] = $doc->saveHTML($li->firstChild);
    

    如果需要保留

      标记,则会更加复杂。 这段代码提取标记并输出内容,内容如下

      <ol class="breadcrumb"></ol>
      

      然后,它像前面一样创建面包屑,并通过将><替换为>面包屑<来插入它。。。

      function injectSlashes($breadcrumb){
          $doc = new DOMDocument();
          $doc->loadHTML($breadcrumb);
          // Extract the ol
          $ol = $doc->getElementsByTagName('ol')[0];
          // Output the HTML for just the ol tag
          $olText = $doc->saveHTML($ol->cloneNode());
          $liList = $doc->getElementsByTagName('li');
          $liValues = array();
          foreach ($liList as $li) {
              $liValues[] = $doc->saveHTML($li->firstChild);
          }
      
          $list = implode("<span aria-hidden=\"true\">/</span>",$liValues);
          // Insert the breadcrumbs in the empty ol tag from above
          $correctBreadcrumb = str_replace("><", ">".$list."<", $olText);
          return $correctBreadcrumb;
      }
      

  •  类似资料:
    • 嘿,我正在用kotlin中的html标记处理json响应。我不明白如何解析html标记作为响应。我试着与改装和moshi合作。我的回答如下 回应 我想在文本视图中显示。 我们可以在android中做吗?

    • 本文向大家介绍使用PHP的HTML DOMDocument解析HTML,包括了使用PHP的HTML DOMDocument解析HTML的使用技巧和注意事项,需要的朋友参考一下 可以通过以下代码获取<div>标记内的<div>标记内的文本,其中<div>内的class =“ main”内- 示例 输出结果 这将产生以下输出-

    • 问题内容: 我有一个嵌套的有序列表。 当前,嵌套元素再次从1开始,例如 第一 第二 第二个嵌套的第一个元素 第二个嵌套的第二个元素 第二个嵌套的第三个元素 第三 第四 我想要的是第二个元素的编号,如下所示: 第一 第二 2.1。第二个嵌套的第一个元素 2.2。第二个嵌套的第二个元素 2.3。第二个嵌套的第三个元素 第三 第四 有办法吗? 问题答案: 这是一个适用于所有浏览器的示例。纯CSS方法可在

    • 所以我在这方面做了一点工作,遇到了麻烦。当它开始处理时,它总是给我一个致命的错误<基本上,我想从互联网上读取一个文本文件,然后对其进行解析,这样我就可以开始分解它,并使用JSON解析器处理JSON数据。但是再往下一点(我已经完成了部分)。我只是在连接和下载数据方面遇到了问题。我只想读入文本文件,然后再次打印出来。谢谢你在这方面的帮助。 这就是它给我的 01-26 15:11:48.373 1958

    • 问题内容: 我有这样的HTML页面: 在另一页上,我正在这样做: jQuery,但是,没有执行在第一个文件中的javascript,即使文档中说的那样。我该怎么做呢? 编辑:不幸的是,在现实世界中的应用程序中,我无法控制“包含”页面的内容。 我们在同一个域中,但是我不能修改它输出的代码,因为它是打包产品,IT部门不允许我们对其进行修改。 问题答案: 正如Pointy 指出的 ( 双关语 ),当您将

    • 问题内容: 我认为这个问题的答案是否定的……但是,有谁知道用HTML / CSS的方法来创建有序列表,而数字后面没有句点?或者,还是指定分隔符? 理想情况下,我不想为每个数字使用不同的类来制作列表样式的图像,但是到目前为止,我已经能够想到的就是这一切……这似乎非常语义化。 IE浏览器: 问题答案: 仅使用CSS(2.1)完全可以做到: 请记住,此解决方案依赖于:before伪选择器,因此某些较旧的

    • 我正在用java创建一个文本编辑器,它将文本保存为html,但向用户显示为纯文本。用户可以更改文本的颜色、对齐方式和样式(粗体和下划线)。为了保存样式调整,整个文本主体以html形式存储在数据库中。我有一个问题,换行没有保存。因此,当用户输入文本时,按enter键并将文本放入新行,保存并重新显示后,所有文本都放入一行。所有的文本都只是放在段落标签里面,没有任何换行符。我想知道是否有一种方法可以告诉

    • 问题内容: 有什么方法可以显示HTML标签而不进行解析?像这样的标签以前工作得很好,但是现在被它取代的并不是那么酷。看一下这个例子: 我正在寻找的等效于旧的XMP标签。新的PRE标签将解析代码。 问题答案: 您可以将元素及其设置用于表示纯文本,并将其属性设置为。这仅影响解析行为:除了元素本身的结束标记之外,无法识别任何标记(标记,实体或字符引用)。(所以它不是 很 一样,这里的认可标签。)你可以单