显示字符串最多包含多少个字符而不拆分单词

发布于 2025-01-08 19:53:31 字数 342 浏览 0 评论 0原文

我目前正在开发一个 php 项目,我需要显示最多 100 个字符的字符串,但不拆分单词。

例如,如果我有字符串

敏捷的棕色狐狸跳过了懒惰的狗回来

假设第 100 个字符处于“跳跃”中间。 目前我正在使用 substr($mystring, 0, 100)

这将打印

快速的棕色狐狸跳跃

,在这种情况下,我想打印

敏捷的棕色狐狸

这可以修复吗

I am currently working on a php project where I need to display a string up to a maximum of 100 characters but without splitting the word.

For example if I have the string

The quick brown fox jumped over the lazy dogs back

Say the 100th character is in the middle of 'jumped'.
At the moment I am using substr($mystring, 0, 100)

This will then print

The quick brown fox jum

Instead in this case I would want to print

The quick brown fox

Is this possible to fix

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

云朵有点甜 2025-01-15 19:53:31
$string = 'The quick brown fox jumped over the lazy dogs back';
$maxLength = 20;

if (strlen($string) > $maxLength) {
    $stringCut = substr($string, 0, $maxLength);
    $string = substr($stringCut, 0, strrpos($stringCut, ' ')); 
}

echo $string;

// output: The quick brown fox

关键是使用 strrpos 在空格处而不是在一个词的中间。

注意:如果这些字符串的源使用多字节字符集,例如 UTF-8,您将需要使用 多字节 等效函数。

$string = 'The quick brown fox jumped over the lazy dogs back';
$maxLength = 20;

if (strlen($string) > $maxLength) {
    $stringCut = substr($string, 0, $maxLength);
    $string = substr($stringCut, 0, strrpos($stringCut, ' ')); 
}

echo $string;

// output: The quick brown fox

The key is using strrpos to cut off at a space rather than the middle of a word.

Note: If the source for these strings uses a multibyte charset, e.g., UTF-8, you will want to use the multibyte equivalent functions.

夏日落 2025-01-15 19:53:31

PHP 的 wordwrap() 函数可以提供帮助。
http://php.net/manual/en/function.wordwrap.php

由于分隔符字符串,它有点老套,但很简洁:

$str2 = wordwrap($str,20,'@@@@@');
$str_final = substr($str2,0,strpos($str2,'@@@@@'));

请注意,如果您的原始字符串包含“@@@@@”,这将会中断,我将它用作唯一的分隔符,我认为大多数英语中都不会出现该分隔符字符串。请随意将“@@@@@”更改为更古怪/独特的内容。

PHP's wordwrap() function can help.
http://php.net/manual/en/function.wordwrap.php

It's kinda hacky due to the separator string, but is concise:

$str2 = wordwrap($str,20,'@@@@@');
$str_final = substr($str2,0,strpos($str2,'@@@@@'));

Note that this will break if your original string contains '@@@@@', I'm using it as a unique separator that I figure will not be present in most english strings. Feel free to change '@@@@@' to something more wonky/unique.

清风挽心 2025-01-15 19:53:31
//Set up -  we need 100 characters
$s="The quick brown fox jumped over the lazy dogs back";
$s="$s. $s. s.";

//Cut
$t=substr($s,0,100);

//Trim
$u=preg_replace('/^(.*).\s\w*$/','${1}',$t);

//Output
echo $u;
//Set up -  we need 100 characters
$s="The quick brown fox jumped over the lazy dogs back";
$s="$s. $s. s.";

//Cut
$t=substr($s,0,100);

//Trim
$u=preg_replace('/^(.*).\s\w*$/','${1}',$t);

//Output
echo $u;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文