删除结尾逗号的单词限制器php

删除结尾逗号的单词限制器php,php,frameworks,word,Php,Frameworks,Word,我使用的是来自密码点火器的单词限制器。我的数据库为主页弹出了一个字符串,因为它太长,不适合这个代码,所以在末尾添加了一个“…”链接到相应的页面。最近我遇到了一个问题,如果我在某个地方有一个逗号,我们会得到一个“,…”,在我看来,这看起来很混乱。因此,我决定更改代码,以便将字符串限制为一定数量的单词,在这一点上,如果字符串在限制后以逗号结尾,那么我们将限制器数量更改为-1。不幸的是,代码不起作用,我看不出哪里出了问题 // limits a string to X number of wo

我使用的是来自密码点火器的单词限制器。我的数据库为主页弹出了一个字符串,因为它太长,不适合这个代码,所以在末尾添加了一个“…”链接到相应的页面。最近我遇到了一个问题,如果我在某个地方有一个逗号,我们会得到一个“,…”,在我看来,这看起来很混乱。因此,我决定更改代码,以便将字符串限制为一定数量的单词,在这一点上,如果字符串在限制后以逗号结尾,那么我们将限制器数量更改为-1。不幸的是,代码不起作用,我看不出哪里出了问题

    // limits a string to X number of words.
    function word_limiter($str, $limit = 100, $link_end = '', $end_char = '…')
    {
        if (trim($str) == '') {
            return $str;
        }
// modified
        $cfc = preg_match('/^\s*+(?:\S++\s*+){1,' . (int) $limit . '}/', $str, $matches);
        if (substr($cfc, -1) == ',') {
            $limit_minus = $limit-1;
            preg_match('/^\s*+(?:\S++\s*+){1,' . (int) $limit_minus . '}/', $str, $matches);
        }
        if (strlen($str) == strlen($matches[0])) {
            $end_char = '';
        }
        if (empty($link_end)) {
            return rtrim($matches[0]) . $end_char;
        } else {
            $end = '<a href="'.$link_end.'">'.$end_char.'</a>'; 
            return rtrim($matches[0]) . $end;
        }

    }
//将字符串限制为X个字数。
虚词"limiter($str,$limit=100,$link"end='',$end"字符='&"8230;'))
{
如果(修剪($str)=''){
返回$str;
}
//修改
$cfc=preg_match('/^\s*+(?:\s++\s*+){1',(int)$limit'.}/',$str,$matches);
如果(substr($cfc,-1)=','){
$limit_减=$limit-1;
preg_match('/^\s*+(?:\s++\s*+){1',(int)$limit_减号'}/',$str,$matches);
}
如果(strlen($str)=strlen($matches[0])){
$end_char='';
}
if(空($link_end)){
返回rtrim($matches[0])。$end_char;
}否则{
$end='';
返回rtrim($matches[0])。$end;
}
}
您可以使用PHP的函数

最终代码:

function word_limiter($str, $limit = 100, $link_end = '', $end_char = '&#8230;')
{
    if (trim($str) == '') {
        return $str;
    }
    preg_match('/^\s*+(?:\S++\s*+){1,' . (int) $limit . '}/', $str, $matches);
    if (strlen($str) == strlen($matches[0])) {
        $end_char = '';
    }
    if (empty($link_end)) { // if link end is empty do not output a link
        return trim(rtrim($matches[0]), ',') . $end_char;
    } else {
        $end = '<a href="'.$link_end.'">'.$end_char.'</a>'; 
        return trim(rtrim($matches[0]), ',') . $end;
    }
}
function word\u limiter($str,$limit=100,$link\u end='',$end\u char='&&8230;)
{
如果(修剪($str)=''){
返回$str;
}
preg_match('/^\s*+(?:\s++\s*+){1',(int)$limit.'}/',$str,$matches);
如果(strlen($str)=strlen($matches[0])){
$end_char='';
}
if(empty($link_end)){//如果link end为空,则不输出链接
返回修剪(rtrim($matches[0]),“,”)。$end_char;
}否则{
$end='';
返回修剪(rtrim($matches[0]),“,”)。$end;
}
}
您可以使用PHP的函数

最终代码:

function word_limiter($str, $limit = 100, $link_end = '', $end_char = '&#8230;')
{
    if (trim($str) == '') {
        return $str;
    }
    preg_match('/^\s*+(?:\S++\s*+){1,' . (int) $limit . '}/', $str, $matches);
    if (strlen($str) == strlen($matches[0])) {
        $end_char = '';
    }
    if (empty($link_end)) { // if link end is empty do not output a link
        return trim(rtrim($matches[0]), ',') . $end_char;
    } else {
        $end = '<a href="'.$link_end.'">'.$end_char.'</a>'; 
        return trim(rtrim($matches[0]), ',') . $end;
    }
}
function word\u limiter($str,$limit=100,$link\u end='',$end\u char='&&8230;)
{
如果(修剪($str)=''){
返回$str;
}
preg_match('/^\s*+(?:\s++\s*+){1',(int)$limit.'}/',$str,$matches);
如果(strlen($str)=strlen($matches[0])){
$end_char='';
}
if(empty($link_end)){//如果link end为空,则不输出链接
返回修剪(rtrim($matches[0]),“,”)。$end_char;
}否则{
$end='';
返回修剪(rtrim($matches[0]),“,”)。$end;
}
}

也许你可以将它集成到这段代码中,我尝试将它添加到return语句中,但似乎不起作用,可能是一些空白。。请尝试$str=trim(trim($str1),',');非常感谢。我只是把函数写错了。现在它工作了!很简单:duh:也许你可以以某种方式将它集成到这个代码中,我尝试将它添加到return语句中,但它似乎不起作用,可能是一些空白。。请尝试$str=trim(trim($str1),',');非常感谢。我只是把函数写错了。现在它工作了!这么简单:嗯: