php - 使用 PHP substr,如何找到前面的空格而不是后面的空格?

标签 php string whitespace

我想在被截断的单词之前的空白处剪掉一个字符串。目前我有工作代码用于在被截断的单词之后处截断一个字符串,但这超出了我的最大字符数限制。

我做了一些实验,我找到了一个找到空白的解决方案,这样 strpos 就不会剪掉单词的中间部分,而是在字符限制内的单词之后找到空白,然后剪掉字符串。

$thestring = "my really really really really really really really";
$getlength = strlen($thestring);
$maxLength = 42;

if ($getlength > $maxLength) { 
    echo substr($thestring, 0, strpos($thestring, ' ', $maxLength));
    echo "...";
} else {
    echo $thestring;
}
echo " - long string";

这是完全有效的,唯一的问题是我想对字符串中的字符数进行硬性限制。但是这样做是在它介于两者之间的单词之后进行裁剪,这使得它超出了限制的几个字符。

例如,这将返回这个字符串:

my really really really really really really - long string

因为42个字符落在最后一个“真的”,所以它把长度延伸到下一个空格。但是现在返回的字符串是 44 个字符。

我更希望它做的是,因为确切的 42 个字符返回:

my really really really really really real

然后,我想将其裁剪到 prior 空格,而不是后面的空格。就像在这个例子中一样,我希望返回:

my really really really really really - long string

这很好,因为它剪掉了最后一个单词的一部分,而不是只返回最后一个单词的一部分 real 看起来很糟糕,或者 整个单词之后真的超出了我的最大字符限制,然后它裁剪了部分最后一个单词,导致整个字符串低于最大限制,这正是我想要的。

所以我想要的上面返回的字符串是 37 个字符,这正是我想要的,因为它少于 42 个。

那么,我如何修改我的代码以将其裁剪到 maxLength 末尾所在的单词的前面的空格处,而不是后面的空格处?

最佳答案

好的。我不知道为什么我的代码示例对您不起作用(这真的很奇怪):-/

但这是基于您的来源的完整代码:

<?php
$thestring = "my really really really really really really really";
$getlength = strlen($thestring);
$maxLength = 42;

if ($getlength > $maxLength) {
    echo substr($thestring, 0, strrpos($thestring, ' ', $maxLength-$getlength));
    echo "...";
} else {
    echo $thestring;
}
echo " - long string";

对于我的控制台,它输出:

   [64] $ php ./ex.php
   my really really really really really... - long string

关于php - 使用 PHP substr,如何找到前面的空格而不是后面的空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38536953/

相关文章:

php - 我可以存储 Facebook 访问 token 并在以后使用吗?

C# 数组,如何创建空数组?

java - Java 的 compareTo 方法的实际应用是什么?

java - 删除字符串的一部分

javascript - 正则表达式 - 替换字符串 - charAt(0) 处没有空格

php - 如何使用 ebay API 向 ebay 添加新商品

php - 用户权限树 : How to get there?

HTML/CSS - 为什么 float :left render as 'invisible' ?

Git 仅忽略 Markdown 文件中的尾随空格

python - 在 Python (Windows) 中拖放多个文件