如何获得特定字符数限制的所有单词

时间:2018-08-16 04:56:00

标签: php regex

让我描述一下500个字符。我需要将字符限制为200个。然后删除最后一个单词,以确保没有断字。

这适用于英语内容,但不适用于其他语言,如日语或繁体中文。当我限制日语或中文描述时,它会在末尾给出一个特殊字符,如�。

下面是我的代码,有没有办法解决这个问题?

function getLimitDescription($description, $limit)
{
    $limitedDesc  = substr($description, 0, $limit);

    // Remove the last word of the limited description
    $limitedDesc = preg_replace('/\W\w+\s*(\W*)$/', '$1', $limitedDesc);
    $lastChar    = substr($limitedDesc, -1);

    if (preg_match("/[\'^£$%&*()}{@#~?><>;,|=_+¬-]/", $lastChar))
    {
        $limitedDesc = substr($limitedDesc, 0, -1);
    }

    return $limitedDesc;
}

1 个答案:

答案 0 :(得分:1)

您不需要使用正则表达式。只需使用strrpos并从右侧找到下一个空格。

function getLimitDescription($description, $limit)
{
    $limitedDesc  = substr($description, 0, $limit);
    $pos = strrpos($limitedDesc, " ");
    $limitedDesc  = substr($limitedDesc, 0, $pos);
    return $limitedDesc;
}

echo getLimitDescription("Insert long string right here", 17);

https://3v4l.org/eao6F