在不拆分单词的情况下限制标题的字符数(以 php 为单位)


Limiting the Character Count of the Title in Php without splitting words

可能的重复项:
在 PHP 中缩短字符串(仅限完整单词)
如何在不切断最后一个单词的情况下从字符串中获取第一个 x 个字符?

很像这个问题:如何使用PHP限制标题标签的长度

。其中答案类似于:

 [title]  ?php echo substr( $mytitle, 0, 70 );  [/title]

。但是,在解决方案不会将任何单词切成两半的情况下,有没有办法实现这一目标?因此,如果单词部分超过限制的字符数,解决方案将删除完整的单词,而不是将其限制在字符数上?

这可能会让你达到 95%,但它并不完美......

$mytitle = 'How to Limit the Length of the Title Tag using PHP';
$arr = explode(' ',$mytitle);
$string = '';
foreach($arr as $word) {
    if(strlen($string) > 69) break;
    $string .= ' ' . $word;
}
echo $string;

以下是更容易实现的解决方案之一,但并不是最有效的。

看看wordwrap,它将字符串分成多行而不会破坏单词。然后,您可以使用 eg 通过行移将其拆分为生成的字符串。 explode("'n", $var, 2)获得第一行,这将是您的标题。

一个有点有趣的,如果不是最佳解决方案(未经测试,但你应该明白):

$wrapped = wordwrap($mytitle, 70, "ENDOFTITLE")
$truncated = substr($wrapped, 0, strpos($wrapped, "ENDOFTITLE"));

不过,重复问题的答案提供了更好的解决方案。