代码之家  ›  专栏  ›  技术社区  ›  Gary Willoughby

在HTML文本中添加缺少的<p>标记而忽略其他标记的最佳方法?

  •  0
  • Gary Willoughby  · 技术社区  · 15 年前

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse feugiat, nunc at vestibulum egestas.
    
    <script type="c">
        #include &lt;stdio.h&gt; 
        #define debug(var) printf(#var &quot; = %d\n&quot;, var)
        int main(void)
        {
            int x = 12;
            debug(x)
            return 0;
        }
    </script>
    
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse feugiat, nunc at vestibulum egestas.
    
    <h3>Test Heading</h3>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ultricies luctus metus ut cursus.
    
    <ol>
        <li>One</li>
        <li>Two</li>
        <li>Three</li>
    </ol>
    
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ultricies luctus metus ut cursus.
    

    如果你注意到没有 <p> 段落周围的标签。我想解析这个HTML并将正确的标记添加到文本的不同段落中。此外,无论使用什么解析器,它都不能触及任何其他有效的HTML。例如,标题和列表不应更改。

    我已经用PHP拼凑出一个解决方案,虽然它可以工作,但速度并不快

    实现这一目标的最佳方式是什么?

    我需要将HTML分解为元素,添加标记,并将组装好的HTML写回页面(?)

    2 回复  |  直到 15 年前
        1
  •  1
  •   cletus    15 年前

    我的建议是使用 HTML Tidy 而不是自己把它拼凑起来。

    $output = tidy_repair_string($input);
    

    HTML Tidy Configuration Options 查看选项列表。对于您所需要的,默认行为可能很好。

        2
  •  0
  •   streetparade    15 年前

    http://simplehtmldom.sourceforge.net/

    $html = str_get_html('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse feugiat, nunc at vestibulum egestas.
    
    <h3>Test Heading</h3>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ultricies luctus metus ut cursus.
    
    <ol>
        <li>One</li>
        <li>Two</li>
        <li>Three</li>
    </ol>
    
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ultricies luctus metus ut cursus.
    ');
    
    $es = $html->find('text');
    
    
    echo $es; // Output: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ultricies luctus metus ut cursus.
    

    现在你必须用这段文字做点什么; 这样地 echo "<p>$es</p>"; 现在,您的文本处于 <p>