laravel url 验证元音变音
laravel url validation umlauts
我想验证 laravel 中的 urls。我的规则包含
"url" => "required|url"
效果很好。但是当用户提交带有变音符号的 url 时,
规则检查将始终失败。
像 öäü 等字符在德语域中有效。 Laravel 中有没有办法在 url 中接受这些字符?
Laravel 使用 filter_var()
和 FILTER_VALIADTE_URL
选项,该选项不允许元音变音。您可以编写自定义验证器或将 regex
验证规则与正则表达式结合使用。我相信你会找到一个 here
"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!
}
感谢@michael 和@lukasgeiter 为我指明了正确的道路。
我决定 post 我的解决方案,以防有人遇到同样的问题。
我创建了一个自定义验证器,例如:
Validator::extend('german_url', function($attribute, $value, $parameters) {
$url = str_replace(["ä","ö","ü"], ["ae", "oe", "ue"], $value);
return filter_var($url, FILTER_VALIDATE_URL);
});
我的规则现在包含:
"url" => "required|german_url,
另外不要忘记将规则添加到您的 validation.php 文件
"german_url" => ":attribute is not a valid URL",
我想验证 laravel 中的 urls。我的规则包含
"url" => "required|url"
效果很好。但是当用户提交带有变音符号的 url 时, 规则检查将始终失败。
像 öäü 等字符在德语域中有效。 Laravel 中有没有办法在 url 中接受这些字符?
Laravel 使用 filter_var()
和 FILTER_VALIADTE_URL
选项,该选项不允许元音变音。您可以编写自定义验证器或将 regex
验证规则与正则表达式结合使用。我相信你会找到一个 here
"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!
}
感谢@michael 和@lukasgeiter 为我指明了正确的道路。 我决定 post 我的解决方案,以防有人遇到同样的问题。
我创建了一个自定义验证器,例如:
Validator::extend('german_url', function($attribute, $value, $parameters) {
$url = str_replace(["ä","ö","ü"], ["ae", "oe", "ue"], $value);
return filter_var($url, FILTER_VALIDATE_URL);
});
我的规则现在包含:
"url" => "required|german_url,
另外不要忘记将规则添加到您的 validation.php 文件
"german_url" => ":attribute is not a valid URL",