关于如何去除html标签有很多问题,但关于它们的函数/方法并不多.
这是情况.我有一个500字符的消息摘要(包括html标签),但我只想要前100个字符.问题是,如果我截断消息,它可能在html标签的中间...这会弄乱一些东西.
假设html是这样的:
<div class="bd">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. <br/>
<br/>Some Dates: April 30 - May 2, 2010 <br/>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. <em>Duis aute irure dolor in reprehenderit</em> in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. <br/>
</p>
For more information about Lorem Ipsum doemdloe, visit: <br/>
<a href="http://www.somesite.com" title="Some Conference">Some text link</a><br/>
</div>
Run Code Online (Sandbox Code Playgroud)
我怎么能拿到前100个字左右?(虽然理想情况下,这将是"内容"的第一个大约100个字符(在html标签之间)
我假设最好的方法是做一个递归算法,跟踪html标签并追加任何会被截断的标签,但这可能不是最好的方法.
我的第一个想法是使用递归来计算嵌套标签,当我们达到100个字符时,查找下一个"<"然后使用递归来编写从那里需要的结束html标签.
这样做的原因是对现有文章做一个简短的总结,而不要求用户返回并提供所有文章的摘要.如果可能的话,我想保留html格式.
注意:请忽略html不是完全语义的.这是我必须从我的WYSIWYG处理的.
我添加了一个潜在的解决方案(这似乎有效)我认为其他人也会遇到这个问题.我不确定它是最好的...而且它可能不完全健壮(事实上,我知道它不是),但我很感激任何反馈
我的建议是找到一个 HTML 友好的遍历器(一个允许您像 XML 一样遍历 HTML 的遍历器),然后从开头标签开始忽略标签本身,只计算标签中的数据。将其计入您的限制,然后一旦达到限制,就关闭每个标签(我想不出任何不只是/无论什么标签的标签)。
这应该工作得相当好并且相当接近您正在寻找的东西。
它完全脱离了 ol'noggin 的顶部,所以我假设会有一些棘手的部分,例如显示的属性值(例如链接标记值)。
| 归档时间: |
|
| 查看次数: |
3177 次 |
| 最近记录: |