将多字节字符串截断为n个字符
我试图在字符串过滤器中使用此方法:
public function truncate($string, $chars = 50, $terminator = ' …');
我期待这个
$in = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYXZ1234567890";$out = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV …";
还有这个
$in = "âãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝ";$out = "âãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđ …";
这是$chars
减去$terminator
字符串的字符。
此外,滤波器应该在$chars
极限以下的第一个字边界切割,例如
$in = "Answer to the Ultimate Question of Life, the Universe, and Everything.";$out = "Answer to the Ultimate Question of Life, the …";
我很确定这应该适用于这些步骤
从最大字符中减去终结符中的字符数量
验证该字符串是否长于计算的限制或返回它不变
在字符串下面找到最后一个空格字符,以获得字边界
如果没有找到最后一个空格,则在最后一个空格处剪切字符串
将终结符附加到字符串
返回字符串
但是,我现在尝试了各种组合str*
和mb_*
功能,但都产生了错误的结果。这不是那么困难,所以我显然缺少一些东西。有人会为此分享一个有效的实现,或者指向一个资源,我终于可以理解如何做到这一点。
一只甜甜圈