【问题标题】:ignore character within html tags while counting characters在计算字符时忽略 html 标签中的字符
【发布时间】:2013-04-16 20:51:36
【问题描述】:

在我当前的模板中,我有一大段来自用户的文本。然后该块在 600 个字符标记处拆分并放置到页面上的特定 div 中,该块的其余部分放置在页面底部附近。这工作正常,但是当在帖子开头附近添加了很多链接时会出现问题。

<a href='...'></a> 被计入总字符数。我总是想在 600 分块。

有没有一种简单的方法可以让我找出 html 字符的长度?这样我就可以将它们添加到 split_length 中。或任何其他想法?完全忽略html字符的方法?

编辑: 我应该清楚我希望链接保留...

【问题讨论】:

  • 如果文本包含 HTML,则需要 HTML 解析器来拆分它,否则会得到不平衡的标签。您也可以隐藏 N 像素以下的所有内容而不是拆分,这要容易得多。
  • 这不是小事。 RegEx 和 HTML 解析器都不会在这里为您提供太多帮助。如果我自己尝试这样做,我可能会strip_tags 最初检查有超过 600 个字符,然后逐个字符地遍历原始字符串,跟踪我是否可数(或在标签中),以及什么标签是“打开”(这样我可以在拆分后关闭它们)。然后继续走,直到数完 600 个可数数。

标签: php html split


【解决方案1】:

使用PHP的函数strip_tags(),然后统计字符数。

【讨论】:

  • 好吧,我有一个 $txt 变量,其中包含整个字符串(超过 600 个字符。几个段落),我只是在每次 600 个字符后将其拆分,而不管里面的内容如何。 ..所以只需将strip_tags() 添加到我的变量中即可正确拆分它,但会删除链接...
  • 好吧,然后从 Adeine 的回答中查看 strip_tags() 的文档,您可以将锚标记作为第二个参数传递。然后根据您的规范将str_replace() 应用于锚标记。
【解决方案2】:

您可以删除所有 HTML 代码,并以准确的计数拆分您的文本。为此,请使用:

string strip_tags ( string $str [, string $allowable_tags ] )

此函数尝试返回一个包含所有 NUL 字节、HTML 和 从给定的 str 中剥离的 PHP 标签。它使用相同的标签剥离 状态机作为 fgetss() 函数。

请参阅here 了解更多信息。

【讨论】:

  • 我在我的文本块上使用了strip_tags,现在我的长度是正确的,但我所有的链接都不见了。
猜你喜欢
  • 2015-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多