web-dev-qa-db-ja.com

laravel URL検証umlauts

LaravelのURLを検証したい。私のルールには

"url" => "required|url"

これはうまく機能しています。ただし、ユーザーがウムラウトを含むURLを送信すると、ルールチェックは常に失敗します。

Öäüなどの文字はドイツ語ドメインで有効です。 Laravelこれらの文字をURLで受け入れる方法はありますか?

11
shock_gone_wild

Laravelはfilter_var()FILTER_VALIADTE_URLumlautsを許可しないオプション。カスタムバリデーターを作成するか、正規表現と組み合わせてregex検証ルールを使用できます。きっと見つかると思います ここ

"url" => "required|regex:".$regex

または、特殊文字の問題を回避するために、ルールを配列として指定することをお勧めします。

"url" => array("required", "regex:".$regex)

または、@ michaelが指摘しているように、検証する前にumlautsを置き換えるだけです。後で必ず本物を保存してください。

$input = Input::all();
$validationInput = $input;
$validationInput['url'] = str_replace(['ä','ö','ü'], ['ae','oe','ue'], $validationInput['url']);
$validator = Validator::make(
    $validationInput,
    $rules
);
if($validator->passes()){
    Model::create($input); // don't use the manipulated $validationInput!
}
7
lukasgeiter