将 PHP 中的字符串截断为最接近的单词
要在指定字符数之前的最后一个单词的末尾裁剪字符串,PHP提供了几种方法。
使用自动换行功能:
自动换行功能将文本分成具有最大宽度的多行,并在单词边界处自动断行。通过仅获取第一行,您可以将文本截断为最接近的单词:
$truncated_string = substr($string, 0, strpos(wordwrap($string, $desired_width), "\n"));
边缘情况处理:
此方法不处理较短的文本比所需的宽度。为此,请使用以下内容:
if (strlen($string) > $desired_width) { $string = substr($string, 0, strpos(wordwrap($string, $desired_width), "\n")); }
令牌截断:
为了解决文本中换行符的潜在问题,此方法将文本拆分为令牌(单词、空格和换行符)并累加它们的长度:
function tokenTruncate($string, $desired_width) { $parts = preg_split('/([\s\n\r]+)/', $string, null, PREG_SPLIT_DELIM_CAPTURE); $length = 0; $last_part = 0; for (; $last_part < count($parts); ++$last_part) { $length += strlen($parts[$last_part]); if ($length > $desired_width) { break; } } return implode(array_slice($parts, 0, $last_part)); }
此方法还处理UTF8 字符。
单元测试:
class TokenTruncateTest extends PHPUnit_Framework_TestCase { // ... test cases ... }
附加说明:
以上是如何将 PHP 中的字符串截断为最接近的单词?的详细内容。更多信息请关注PHP中文网其他相关文章!