Php 如何将字符串substr()替换为特定长度,但直到最后一个空格?

Php 如何将字符串substr()替换为特定长度,但直到最后一个空格?,php,substring,Php,Substring,假设我们有一个字符串,模式也为我们提供了一个描述解决方案的通用词汇表 我们使用substr()这个字符串,所以我们的模式也为我们提供了一个描述的通用词汇表 如何将最后一个字符串剪切为模式也为我们提供了一个常见的词汇表来 我的方式是: $text = mb_substr($new['text'], 0, 100); if(mb_substr($text, -1) != ' ') { $text_expl = explode(' ', $text); $text = implo

假设我们有一个字符串,
模式也为我们提供了一个描述解决方案的通用词汇表

我们使用
substr()
这个字符串,所以我们的
模式也为我们提供了一个描述
的通用词汇表

如何将最后一个字符串剪切为
模式也为我们提供了一个常见的词汇表来

我的方式是:

$text = mb_substr($new['text'], 0, 100);

if(mb_substr($text, -1) != ' ') {

    $text_expl = explode(' ', $text);

    $text = implode(' ', array_splice($text_expl, 0, -1)) . ' ...';

}
有更好的吗


也许regualr表达式或某些PHP内置函数可以做类似的事情?

这将查找最后一个空格并获取子字符串

$text = mb_substr($new['text'], 0, 100);
$i = mb_strrpos($text, ' ');
if ($i !== false)
    $text = mb_substr($text, 0, $i);

这将查找最后一个空格并获取子字符串

$text = mb_substr($new['text'], 0, 100);
$i = mb_strrpos($text, ' ');
if ($i !== false)
    $text = mb_substr($text, 0, $i);
我会用这个:

if (preg_match('/^.{1,26}\b/s', $str, $match))
{
    echo $line=$match[0];
}
这将按您想要的方式截断文本。此外,当您指定的字符数超过字符串中的实际字符数时,它只会返回整个字符串。这也是我们想要的结果

下面的方法也可以工作,但是当字符串中的字符少于指定的字符时,会出现错误

// Needs more than 260 characters in $str
echo substr($str, 0, strpos($str, ' ', 260));
因此,由于您需要将其包装在
if
语句中,为了检查
$str
的长度,我会选择第一个选项。

我会使用以下选项:

if (preg_match('/^.{1,26}\b/s', $str, $match))
{
    echo $line=$match[0];
}
这将按您想要的方式截断文本。此外,当您指定的字符数超过字符串中的实际字符数时,它只会返回整个字符串。这也是我们想要的结果

下面的方法也可以工作,但是当字符串中的字符少于指定的字符时,会出现错误

// Needs more than 260 characters in $str
echo substr($str, 0, strpos($str, ' ', 260));

因此,既然您需要将其包装在
if
语句中,为了检查
$str
的长度,我会选择第一个选项。

也许在另一篇文章中有您的解决方案:也许在另一篇文章中有您的解决方案: