让我描述一下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;
}
答案 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);