這裏是後加上ellipsis
你的修復ED的方法:
$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 demo
正如我在評論中指出,可以匹配標點符號(可選,與\p{P}*
),但我忘了\b
可以同時匹配尾隨和領先字邊界。通過限制\b
的負向預測(?!\w)
(如(?!\w)\b
)我們只匹配尾隨字邊界。
此外,捕獲組((...)
)被添加到圖案,使得我們只捕獲成1組字符串以尾隨標點符號修剪出來,並且該值可以與$match[1]
被訪問。
嘗試使用'/ ^(。{1,300})\ b \ p {P} */su''匹配尾部標點並僅使用trim($ match [1])。 「…」;'。 –
只使用wordwrap –
@WiktorStribiżew沒有工作 - [eval.in](https://eval.in/508404) –