Created
May 22, 2018 07:50
-
-
Save logue/fdb8f995269cae314b822256d81ff4b7 to your computer and use it in GitHub Desktop.
全角を含む空白文字をトリムして改行コードをLFにし、空白しか残らなかったらNULLを入れるLaravel用Middleware
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* 入力文字列のサニタイズ. | |
* | |
* @author Logue <logue@hotmail.co.jp> | |
* @copyright 2018 Logue All Rights Reserved | |
* @license MIT | |
*/ | |
namespace App\Http\Middleware; | |
use Closure; | |
class Sanitize | |
{ | |
/** | |
* 全角を含む空白文字を削除し、LF改行に統一。空白だった場合NULLにする。 | |
* | |
* @param \Illuminate\Http\Request $request | |
* @param \Closure $next | |
* | |
* @return mixed | |
*/ | |
public function handle($request, Closure $next) | |
{ | |
$input = $request->all(); | |
$trimmed = []; | |
foreach ($input as $key => $val) { | |
// 最初に文字列の前後の空白をpreg_replaceで削除する。 | |
// 次に改行コードをLFに統一する。 | |
// 最後にtrimで前後の改行文字を削除する。 | |
$processed = trim( | |
str_replace([chr(0x0d).chr(0x0a), chr(0x0d), chr(0x0a)], "\n", | |
preg_replace('/\A[\p{C}\p{Z}]++|[\p{C}\p{Z}]++\z/u', '', $val) | |
) | |
); | |
// 空白が残った場合NULLを代入する。 | |
$trimmed[$key] = empty($processed) ? null : $processed; | |
} | |
$request->merge($trimmed); | |
return $next($request); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
入力変数を見境なくトリムするのでバイナリデーターを扱うときは注意。