删除最大限制字符串

时间:2018-11-14 09:18:14

标签: php laravel-5

我有一个包含14 characters TEST,TEST,TEST

的字符串

问题是我想将字符串限制为7个字符并存储到DB

**我已经尝试过此代码:**

$text = "TEST,TEST,TEST";
DB::table('table')
       ->update([
       'name' => substr($text, 0, 7);
    ]);

但是像这样的结果TEST,TE,我不想显示最后一个剪切字符,如果不是最多7个字符,我希望这样的结果TES

我想限制每个插入数据库的字符串仅7个字符,如果7个字符中有被截断的单词,例如'TE','T','TES',我不想显示它,所以只显示显示的完整单词为“ TEST”。

2 个答案:

答案 0 :(得分:1)

您可以在PHP端进行处理,然后在UPDATE查询中使用它。

$text = "TEST,TEST,TEST";

$exp = explode(",", $text); // Create an array

$final_string = '';

foreach($exp as $v)
{
    //Check when new value is added and string length is less than 7, concat it
    if(strlen($final_string) + strlen($v) <= 7)
    {
        $final_string .= "$v,";
    }
}

$final_string = trim($final_string, ",");

echo $final_string; // OUTPUT: TEST

它也适用于动态字符串。例如您的字符串是T,TEST,TEST,它将返回T,TEST

  

请注意,如果您使用逗号分隔值,则此解决方案将起作用。

要使其使用空格,逗号和其他字符,请按如下所示将explode替换为preg_split

$exp = preg_split("/[\s,]+/", $text);

答案 1 :(得分:0)

如果只需要一个定界符,则可以使用explode

$text = 'TEST,TEST,TEST';
$word = explode(',', substr($text, 0, 7))[0];

如果需要多个定界符,则可以使用preg_split并在此示例中在正则表达式,空格和逗号中添加定界符:

$text = "TEST,TEST,TEST";
$word = preg_split("/[\s,]+/", substr($text, 0, 7))[0];