我有一个包含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”。
答案 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];