Теперь я обрезаю каждый вход отдельно, как показано ниже:
$username = trim(Input::get('username')); $password = trim(Input::get('password')); $email = trim(Input::get('email')); $validator = Validator::make(array('username' => $username, 'password' => $password, 'email' => $email), array('username' => 'required|min:6', 'password' => 'required|min:6', 'email' => 'email')); 
Любой подход к работе с Trim одновременно с
  Input::all() или Input::only('username', 'password', 'email') ? 
И для чего лучше всего это делать?
Примечание. Это решение не будет работать, если какой-либо из ваших входов является массивом (например, «данные []»).
Вы можете попробовать это, обрезать с помощью этой одной строки кода перед проверкой:
 Input::merge(array_map('trim', Input::all())); 
Теперь сделайте остальную часть своего кодирования
 $username = Input::get('username'); // it's trimed // ... Validator::make(...); 
  Если вы хотите исключить некоторые входы из обрезки, тогда вы можете использовать следующее, если all() 
 Input::except('password'); 
Или вы можете использовать
 Input::only(array('username')); 
  Обновление : поскольку входы Laravel 5.4.* TrimStrings из-за нового промежуточного программного обеспечения TrimStrings .  Поэтому нет необходимости беспокоиться об этом, потому что это промежуточное программное обеспечение выполняется по каждому запросу, и оно также обрабатывает входные данные массива. 
В зависимости от вашего проекта ниже может быть слишком навязчивым / обобщенным / etc для ваших нужд; настройте по мере необходимости.
password (и его подтверждение) исключается, поскольку люди могут захотеть использовать пространство в качестве части дальнейшего затенения своих паролей.  app/helpers.php 
 /** * @param callable $callback * @param array $array * * @return mixed * * @link http://php.net/manual/en/function.array-map.php#112857 */ function array_map_recursive($callback, $array) { foreach ($array as $key => $value) { if (is_array($array[$key])) { $array[$key] = array_map_recursive($callback, $array[$key]); } else { $array[$key] = call_user_func($callback, $array[$key]); } } return $array; } 
 app/filters.php 
 App::before( function (\Illuminate\Http\Request $request) { // Trim all input $request->merge( array_map_recursive( "trim", array_except( $request->all(), ["password", "password_confirmation"] ) ) ); } ); 
Возможно, вы можете использовать функцию array_map php, чтобы обрезать содержимое вашего входного массива.
 $validator = Validator::make(array_map('trim',Input::all()), array('username' => 'required|min:6', 'password' => 'required|min:6', 'email' => 'email')); 
Или, если вы хотите использовать переменную, которую вы можете использовать позже:
 $inputs = array_map('trim', Input::only('username', 'password', 'email')) 
 $attributes = Input::only('username', 'password', 'email'); foreach ($attributes as &$value) { $value = trim($value); //and any further preprocessing you want } $validator = Validator::make($attributes, array( 'username' => 'required|min:6', 'password' => 'required|min:6', 'email' => 'email' )); //now you may pass preprocessed $attributes to the model create() method, //still having the original input untouched if you may need it 
  Обычно я также использую этот подход для замены необязательных значений null когда они пусты, потому что я предпочитаю хранить их в БД как NULL а не пустые строки. 
Лучше всего делать обрезку в модели, а не в контроллерах, потому что тогда вам не нужно дублировать код во всех ваших контроллерах, чтобы снова и снова обрезать одни и те же вещи:
 public function setUsernameAttribute($value) { $this->attributes['username'] = trim($value); } 
Таким образом, вам никогда не придется забывать обрезать все атрибуты модели в ваших контроллерах. Модель позаботится об этом, и вам больше не придется об этом беспокоиться.
Что касается обрезки всего сразу и отдельно, я думаю, что разница настолько мала, что никто не заметил бы разницы.
Лучше всего сочетать вышеизложенное. Как правило, вам нужно будет фильтровать все входные данные, кроме полей пароля и пароля_подтверждения. Также делать это с одной строкой в фильтре приятно.
// app / filters.php
 App::before(function($request) { // Trim all input Input::merge(array_map('trim', Input::except(['password', 'password_confirmation']))); }); 
  улучшение кода Халила Озгура для удаления всех пробелов, <br> <br > , <br class="asdasd"> ,   и т. д. 
 // filters.php App::before(function (\Illuminate\Http\Request $request) { $request->merge( array_map_recursive( "preg_replace", array_except( $request->all(), ["password", "password_confirmation"] ) ) ); }); // helpers.php function array_map_recursive($callback, $array) { foreach ($array as $key => $value) { if (is_array($array[$key])) { $array[$key] = array_map_recursive($callback, $array[$key]); } else { $array[$key] = call_user_func_array($callback, ['#(( ){0,}<br( {0,})(/{0,1})>){1,}$#i', '', $array[$key]]); } } return $array; }