我使用此函数来限制输出中字符串的长度,
/* limit the lenght of the string */
function limit_length($content, $limit)
{
# strip all the html tags in the content
$output = strip_tags($content);
# count the length of the content
$length = strlen($output);
# check if the length of the content is more than the limit
if ($length > $limit)
{
# limit the length of the content in the output
$output = substr($output,0,$limit);
$last_space = strrpos($output, ' ');
# add dots at the end of the output
$output = substr($output, 0, $last_space).'...';
}
# return the result
return $output;
}
它工作正常,但我认为它并不完美...例如,我在字符串中有这个文本,
Gender Equality; Radicalisation; Good Governance, Democracy and Human Rights;
这就是我使用函数的方式,
echo limit_length($item['pg_description'], 20);
然后它返回,
Gender Equality;...
如果您想告诉别人内容/行中有更多文字,那么使用;...
时看起来不太好。
我在想是否有可能使用正则表达式检查...
之前是否存在任何标点符号然后将其删除。
有可能吗?如何编写表达式以改进我的功能,以便可以进行“防弹”?
感谢。
答案 0 :(得分:2)
$str = preg_replace( "/\W+$/", "", $str );
答案 1 :(得分:1)
删除除三个句点之前的字母以外的任何内容(根据需要进行调整):
$foo = preg_replace("[a-zA-Z0-9]+\.{3}", "...", $foo);