Получены ли результаты запроса laravel?

В моем приложении laravel я пытаюсь урезать результат, который я получаю из базы данных. Функция trim () не удаляет последнее пространство в строке.

Код – это

$institutes = Institute::all(); foreach ($institutes as $institute) { $str = $institute->name; $str = trim($str); //doesn't remove the trailing space $len = strlen($str); } 

Теперь, прежде всего, длина $str равна 1 больше, чем она должна быть. Это должно быть 20 но это как-то показывает 21 . Другое дело, последний символ – это space по моему входу.

Когда я пытаюсь напечатать последние (21-й) и второй (20-й) символы – последний символ (который даже не должен быть там), а второй последний символ, который должен быть space , окажется чем-то вроде этого .

dot в браузере (как второй последний символ) появляется в течение почти секунды, а затем исчезает. Теперь, что происходит? Почему это происходит?

Пожалуйста, дайте мне указания, иначе я сойду с ума!

Обновить:

Это дамп переменной $str

 string(21) "Vidyalankar Classes " 

Solutions Collecting From Web of "Получены ли результаты запроса laravel?"

Я чувствую, что конечное пространство, на которое вы ссылаетесь, является символом не-utf8.

Вместо этого попробуйте удалить все недопустимые символы, а не обрезать.

 foreach ($institutes as $institute) { $str = $institute->name; // be careful, try to double check, might also remove valid utf 8 characters like Chinese characters. $str = preg_replace('/[^(\x20-\x7F)]*/','', $str); $len = strlen($str); } 

обратитесь к документации по обрезке .

Эта функция возвращает строку с пробелом, разделенным с начала и конца строки. Без второго параметра trim () разделит эти символы:

 " " (ASCII 32 (0x20)), an ordinary space. "\t" (ASCII 9 (0x09)), a tab. "\n" (ASCII 10 (0x0A)), a new line (line feed). "\r" (ASCII 13 (0x0D)), a carriage return. "\0" (ASCII 0 (0x00)), the NUL-byte. "\x0B" (ASCII 11 (0x0B)), a vertical tab. 

Вы также можете попробовать другой подход, например

 $str = preg_replace('/[^A-Za-z0-9\. -]/','', $str); // using trim, trims off invalid characters $str = trim($str, "\x20..\x7F");