当我使用时substr($string,0,100),它会给出前100个字符.有时它留下了最后一个字不完整.这看起来很奇怪.我可以用字而不是字符来限制吗?
Mar*_*ers 17
如果你只计算单词,那么结果刺痛仍然可能很长,因为单个"单词"可能有30个字符或更多.我建议将文本截断为100个字符,除非这会导致单词被截断,那么你还应该删除单词的截断部分.这涉及到相关问题:
使用wordwrap
$your_desired_width = 100;
if (strlen($string) > $your_desired_width)
{
$string = wordwrap($string, 100);
$i = strpos($string, "\n");
if ($i) {
$string = substr($string, 0, $i);
}
}
Run Code Online (Sandbox Code Playgroud)
这是答案的一个修改版本在这里.如果输入文本可能很长,你可以在调用wordwrap之前添加这一行,以避免wordwrap必须解析整个文本:
$string = substr($string, 0, 101);
Run Code Online (Sandbox Code Playgroud)
使用正则表达式 (来源)
$string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, 100));
Run Code Online (Sandbox Code Playgroud)