如何使用PHP中的substr()捕获完整的单词,按字词限制?

nec*_*tar 9 php substring

当我使用时substr($string,0,100),它会给出前100个字符.有时它留下了最后一个字不完整.这看起来很奇怪.我可以用字而不是字符来限制吗?

Mar*_*ers 17

如果你只计算单词,那么结果刺痛仍然可能很长,因为单个"单词"可能有30个字符或更多.我建议将文本截断为100个字符,除非这会导致单词被截断,那么你还应该删除单词的截断部分.这涉及到相关问题:

如何将PHP中的字符串截断为最接近一定数量字符的单词?

使用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)