我正在寻找一个关闭HTML标签的PHP函数。
我正在构建一个网站,其管理员在“所见即所得”中输入内容。编辑。某些屏幕仅显示部分内容,然后提示用户点击更多"。因此,我需要能够关闭在最初显示的内容部分中打开的所有HTML标记。
感谢您的帮助
答案 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元素中提取出来。
的答案答案 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_later
,initially_displayed
仍然可以正确关闭。
然后,您只需使用JavaScript将displayed_later
上的样式设置为display:block;