寻找PHP函数来关闭HTML标签

时间:2010-11-26 20:05:59

标签: php html

我正在寻找一个关闭HTML标签的PHP函数。

我正在构建一个网站,其管理员在“所见即所得”中输入内容。编辑。某些屏幕仅显示部分内容,然后提示用户点击更多"。因此,我需要能够关闭在最初显示的内容部分中打开的所有HTML标记。

感谢您的帮助

3 个答案:

答案 0 :(得分:8)

我认为您可以通过tidy之类的方式运行HTML来实现这一目标。对此的扩展名为available in PHP

例如,假设您有一个像这样的片段

<h1>hello

<table>
<tr><td>and you cut the text right here... </t

刺!悬挂标签和中间标签的截断!

这是你要回来的东西

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 25 March 2009), see www.w3.org">
<title></title>
</head>
<body>
<h1>hello</h1>
<table>
<tr>
<td>and you cut the text right here...</td>
</tr>
</table>
</body>
</html>

非常令人印象深刻!现在你需要做的只是将修复后的片段从body元素中提取出来。

另见PHP: Truncate HTML, ignoring tags

的答案

答案 1 :(得分:1)

您应该可以使用PHP的本机DOM library执行此操作。使用截断的内容创建DOMDocument对象,然后将其转换回字符串将导致规范化的DOM树与浏览器使用DocumentFragment产生的不同。

答案 2 :(得分:0)

解决方案是让“点击更多”不会延伸到任何需要关闭的标签之外。例如:

<body>
  <div id="main_content">
    <div id="title"></div>
    <div id="post"></div>
      <div id="initially_displayed">
        <p>Your post goes here</p>
        <a onclick="display displayed_later">Click for more</a>
        <div id="displayed_later" style="display:none;">
          <p>More goes here</p>
        </div>
      </div>
    </div>
  </div>
</body>

注意displayed_later内部initially_displayed的内容。这种方式即使未显示displayed_laterinitially_displayed仍然可以正确关闭。

然后,您只需使用JavaScript将displayed_later上的样式设置为display:block;