Удалить строку в предельном максимуме - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть строка с 14 characters TEST,TEST,TEST

проблема в том, что я хочу ограничить строку до 7 символов и сохранить ее в БД

** Я пробовал этот код: **

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

но результат как этот TEST,TE, я не хочу показывать последний вырезанный символ, я хочу результат как этот TES, если не до 7 символов.

Я хочу ограничить каждую строку, которая вставляет в базу данных, только 7 символами, если из 7 символов есть слова, которые усекаются как 'TE', 'T', 'TES', я не хочу отображать их,поэтому отображаются только полные слова «ТЕСТ».

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Если вам нужен только один разделитель, вы можете использовать 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];
0 голосов
/ 14 ноября 2018

Вы можете обработать это на стороне 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...