laravel url検証ウムラウト 質問する

laravel url検証ウムラウト 質問する

LaravelでURLを検証したい。ルールには以下が含まれる。

"url" => "required|url"

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

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

ベストアンサー1

Laravelは、ウムラウトを許可しないオプションfilter_var()を使用します。カスタムバリデーターを書いたり、正規表現と組み合わせて検証ルールを使用したりすることができます。きっと見つかるでしょう。FILTER_VALIADTE_URLregexここ

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

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

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

または、@michael が指摘しているように、検証する前にウムラウトを置き換えるだけです。後で実際のウムラウトを保存することを忘れないでください。

$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!
}

おすすめ記事