0

我有这个限制文本的功能,比如上面的 50 个字符:

$bio = limit_text($bio, 50);

function limit_text($text, $length){ // Limit Text
    if(strlen($text) > $length) {
        $text = substr($text, 0, strpos($text, ' ', $length));
    }
    return $text;
}

这应该回显类似:

您好,这是一个限制为 50 个字符的文本,它是一个很棒的...

问题是该功能显示的最后一个标点符号看起来不专业。就像在这个例子中一样:

您好,这是一个限制为 50 个字符的文本,最后有一个逗号,...

有什么办法可以让函数不显示最后一个标点符号?

谢谢!

4

4 回答 4

0
<?php

$text="Hello, this is a text limited to 50 chars and it has a comma at the end.";

//$text = preg_replace("/[^a-zA-Z 0-9]+/", " ", $text); //bad
$text=rtrim($text,",.;:- _!$&#"); // good select what you want to remove


echo $text;
于 2012-06-07T00:07:35.187 回答
0

这应该可以完成工作,ctype_punct检查给定字符串中的所有非字母数字字符。

function limit_text($text, $length){ // Limit Text
    if(strlen($text) > $length) {
        $text = substr($text, 0, strpos($text, ' ', $length));
        if(ctype_punct(substr($text,-1))
            $text=substr($text,0,-1);
    }
    return $text;
}
于 2012-06-07T00:08:11.793 回答
0
return rtrim($text, ',') . '...'; // That is if you only care about the ',' character 
于 2012-06-07T00:08:42.557 回答
-1

您可以使用这样的函数来解析第$text一个:

$text = preg_replace("/[^a-zA-Z 0-9]+/", " ", $text);
于 2012-06-07T00:04:30.993 回答