某些数字或具有单词边界的字符后的省略号

帕特里克·格雷戈里奥

我正在尝试使用省略号(...)来缩短详细描述,并希望具有单词边界。

这是我当前的代码eval.in

# Assume $body is a long text.
$line = $body;
if(strlen($body) > 300 && preg_match('/^.{1,300}\b/su', $body, $match)) {
    $line = trim($match[0]) . "…";
}
echo $line;

这实际上效果很好,我喜欢它,除了在某些情况下单词边界后面带有标点符号。

如果使用上面的代码,则会得到如下结果:

This is a long description…I have punctuations,…我希望在省略号之前删除最后一个单词之后的标点符号。

帮助?

维克多·史翠比维

这是您的固定方法:

$body = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam eu congue ex. Nunc sem arcu, fermentum vel feugiat quis, consequat nec enim. Quisque et pulvinar velit, et laoreet justo. Integer quis sapien ac turpis mattis lobortis at at metus. Vestibulum euismod turpis odio, id luctus quam pharetra, at, et. Sed finibus, nunc at ultricies posuere, dui mauris aliquet quam, eget aliquet ligula libero a turpis. Pellentesque eu diam sodales, sollicitudin leo et, sagittis magna. Donec feugiat, velit quis condimentum porttitor, enim sapien varius elit, sit amet pretium risus turpis vitae massa. Sed ac ligula sit amet lorem scelerisque tristique a id ex. Nullam maximus tincidunt magna, vel molestie lectus tempus non. Sed euismod placerat ultricies. Morbi dapibus augue ut odio faucibus, vel maximus nisl pharetra. Aliquam hendrerit dolor in ipsum pharetra, eget tincidunt lacus ultrices.";

$line = $body;
if(strlen($body) > 300 && preg_match('/^(.{1,300})(?!\w)\b\p{P}*/su', $body, $match)) {
    $line = trim($match[1]) . "…";
}
echo $line;

请参阅eval.in演示

正如我在评论中指出的那样,您可以匹配标点符号(可选地,带有\p{P}*),但是我忘记了它\b可以匹配尾随前导词的边界。通过\b使用负的超前限制(?!\w)(例如(?!\w)\b)来限制,我们仅匹配尾随单词边界。

此外,将捕获组((...))添加到模式中,以便我们仅将修剪了尾部标点符号的字符串捕获到组1中,并且可以使用来访问该值$match[1]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TextView:在省略号后添加文本或更改省略号字符

来自分类Dev

Android:ellipsize结尾-省略号后的多余字符

来自分类Dev

具有多个跨度的文本溢出省略号

来自分类Dev

如何用省略号截断长文本,但总是在省略号后显示图标

来自分类Dev

如何使省略号在具有动态宽度(flex:1)的flex项目上工作?

来自分类Dev

具有第二列动态宽度和省略号的固定宽度表

来自分类Dev

具有3个点的CSS“省略号”的Angular 7垫选择问题

来自分类Dev

将工具提示添加到具有CSS文本溢出的元素:省略号

来自分类Dev

使用省略号截断 <a> 中的字符串,但最后保留 img - 没有 JS

来自分类Dev

处理省略号

来自分类Dev

结构省略号

来自分类Dev

列表项的文本溢出省略号并保留数字

来自分类Dev

doctest省略号后忽略行首

来自分类Dev

doctest省略号后忽略行首

来自分类Dev

左侧省略号中出现奇怪的特殊字符

来自分类Dev

反应-添加省略号字符不起作用

来自分类Dev

文本溢出:省略号显示不同的字符

来自分类Dev

如何在超过 170 个字符的第一个空格后添加省略号超链接?

来自分类Dev

省略项中的省略号省略

来自分类Dev

将perl中的字符串截断为带有尾随省略号的子字符串

来自分类Dev

带有省略号的动态文本旁边的滑动图标

来自分类Dev

带有省略号的CSS文字换行

来自分类Dev

如何使div省略号里面有多个段落?

来自分类Dev

相等但动态大小的列,带有省略号

来自分类Dev

带有内联元素的CSS省略号?

来自分类Dev

截断标题旁边带有省略号的文本

来自分类Dev

内联元素在文本上带有省略号

来自分类Dev

使用正则表达式删除带有省略号的未完成的字符串

来自分类Dev

Reduce()和...(省略号)

Related 相关文章

  1. 1

    TextView:在省略号后添加文本或更改省略号字符

  2. 2

    Android:ellipsize结尾-省略号后的多余字符

  3. 3

    具有多个跨度的文本溢出省略号

  4. 4

    如何用省略号截断长文本,但总是在省略号后显示图标

  5. 5

    如何使省略号在具有动态宽度(flex:1)的flex项目上工作?

  6. 6

    具有第二列动态宽度和省略号的固定宽度表

  7. 7

    具有3个点的CSS“省略号”的Angular 7垫选择问题

  8. 8

    将工具提示添加到具有CSS文本溢出的元素:省略号

  9. 9

    使用省略号截断 <a> 中的字符串,但最后保留 img - 没有 JS

  10. 10

    处理省略号

  11. 11

    结构省略号

  12. 12

    列表项的文本溢出省略号并保留数字

  13. 13

    doctest省略号后忽略行首

  14. 14

    doctest省略号后忽略行首

  15. 15

    左侧省略号中出现奇怪的特殊字符

  16. 16

    反应-添加省略号字符不起作用

  17. 17

    文本溢出:省略号显示不同的字符

  18. 18

    如何在超过 170 个字符的第一个空格后添加省略号超链接?

  19. 19

    省略项中的省略号省略

  20. 20

    将perl中的字符串截断为带有尾随省略号的子字符串

  21. 21

    带有省略号的动态文本旁边的滑动图标

  22. 22

    带有省略号的CSS文字换行

  23. 23

    如何使div省略号里面有多个段落?

  24. 24

    相等但动态大小的列,带有省略号

  25. 25

    带有内联元素的CSS省略号?

  26. 26

    截断标题旁边带有省略号的文本

  27. 27

    内联元素在文本上带有省略号

  28. 28

    使用正则表达式删除带有省略号的未完成的字符串

  29. 29

    Reduce()和...(省略号)

热门标签

归档