我正在尝试在字符串过滤器中使用此方法:
public function truncate($string, $chars = 50, $terminator = ' …');
我希望这
$in = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYXZ1234567890"; $out = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV …";
还有这个
$in = "âãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝ"; $out = "âãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđ …";
那是$chars减去$terminator字符串的字符。
$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_*函数的各种组合,但是都产生了错误的结果。这不是那么困难,所以我显然缺少了一些东西。有人会为此共享一个可行的实施方案, 还是 将我指向一个资源,使我最终能够理解如何做到这一点。
str*
mb_*
谢谢
尝试这个:
function truncate($string, $chars = 50, $terminator = ' …') { $cutPos = $chars - mb_strlen($terminator); $boundaryPos = mb_strrpos(mb_substr($string, 0, mb_strpos($string, ' ', $cutPos)), ' '); return mb_substr($string, 0, $boundaryPos === false ? $cutPos : $boundaryPos) . $terminator; }
但是您需要确保正确设置内部编码。