Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 取一个随机字符串,使其包含155个字符,以最近的单词结尾_Php_Strlen - Fatal编程技术网

Php 取一个随机字符串,使其包含155个字符,以最近的单词结尾

Php 取一个随机字符串,使其包含155个字符,以最近的单词结尾,php,strlen,Php,Strlen,我正在构建一个系统来为元标记创建动态描述。它将页面上的帖子输入到一个函数中,该函数将所有不必要的内容剔除,然后让strlen看到它太大,并创建一个单词列表。现在,我需要删除适当数量的单词,将字符串减少到155个字符或152个字符,并添加一个省略号 示例字符串(所有这些都不是实际代码,而是用于sudo代码的代码) $string=“你好,可爱的Solia Avatar社区,我有一个小问题,我需要你的帮助。我以前有绘画工具SAI,但我的笔记本电脑吃掉了我的很多文件,其中一个是SAI。现在我正试图找回

我正在构建一个系统来为元标记创建动态描述。它将页面上的帖子输入到一个函数中,该函数将所有不必要的内容剔除,然后让strlen看到它太大,并创建一个单词列表。现在,我需要删除适当数量的单词,将字符串减少到155个字符或152个字符,并添加一个省略号

示例字符串(所有这些都不是实际代码,而是用于sudo代码的代码)

$string=“你好,可爱的Solia Avatar社区,我有一个小问题,我需要你的帮助。我以前有绘画工具SAI,但我的笔记本电脑吃掉了我的很多文件,其中一个是SAI。现在我正试图找回它,但我丢失了我从中获得它的网站。我一直在寻找一个网站,以大约70美元的价格购买它。”

echo strlen($string)=296

if(strlen($string) > 155) {
    // Get word amount
    $words = preg_split('/\s+/', ltrim($string), 155 + 1);
}

现在,我有一个数组中的单词,我需要把数组中的单词总数降到155个,停在最近的单词处,不要笨拙地打断它。也许我试图错误地解决这个问题,我需要使用一组不同的函数。

基本思想是在前155个字符之后找到第一个空格的位置。这可以通过strpo($string,,,155)
实现。然后使用
substr($string,0,$endat155)
检索从开始到该位置的字符串部分

$endat155 = strpos($string, ' ', 155);
$firstWords = substr($string, 0, $endat155);
echo $firstWords;

可能重复感谢布雷特。我希望有一个不同的解决方案,而不做for循环来计数字符。这似乎过于简单化了。我测试了那个被接受的答案,它返回的长度将高于期望的长度。