在考虑“完全停止”时(在CachePHP TextHelper-> truncate中)截断html文本

编辑:

我最终使用了CakePHPtruncate()功能.它更快,支持unicode:D

但问题仍然存在:

如何使功能自动检测完全停止(.)并在此之后切断它?所以基本上$length会被半忽略.因此,如果新文本将具有不完整的句子,则在句子结束之前将附加更多单词(或者删除,取决于从截止到下一个/上一个句子的字符串的长度)

编辑2:
我发现了如何检测到完全停止.我换了:

 if (!$exact) {
   $spacepos = mb_strrpos($truncate, ' ');

 ...

 if (!$exact) {
    $spacepos = mb_strrpos($truncate, '.');
 ...

编辑 – 问题:

当我有像img这样的标签在其属性中有点时,文本会在标签内截止:

 $text = '<p>Abc def abc def abc def abc def. Abc def <img src="test.jpg" /></p><p>abc def abc def abc def abc def.</p>';

 echo htmlentities(truncate($text));

我该如何解决这个问题?我会开一个赏金,因为原来的问题已经回答了……

解决方法:

This snippet解决了你正在寻找的东西,并列出它的失败(句号可能不表示句子结束,其他标点符号可以结束句子).

它会将字符扫描到$maxLen,然后在找到的最后一次完整停止后有效地“丢弃”部分句子.

在你的情况下,你在返回$new_text之前就使用了这个函数.

上一篇:delete、truncate、drop区别


下一篇:oracle中的函数trunk()和.truncate()和add_months()