我需要做的是允许文本字段验证并允许 mailto: http://或 tel: 类型的 URL。
我正在使用 PHP 5(和 Laravel 4,但与本文无关)。
我已经在谷歌上搜索了一段时间,但我似乎无法找到允许匹配所有三种类型的表达式。我尝试了一些长而复杂的字符串,以及一些真正的短字符串,但它只返回 false。
这是我的最新消息:
mailto:([^\?]*)|http:([^\?]*)|tel:([^\?]*)
解决方案:
因为我使用的是 Laravel 4,所以我决定使用 parse_url 函数而不是正则表达式。也就是说,还提供了其他一些很棒的解决方案。
我的最终验证器函数:
Validator::extend('any_url', function($attribute, $value)
{
$allowed = ['mailto', 'http', 'https', 'tel'];
$parsed = parse_url($value);
return in_array($parsed['scheme'], $allowed);
});
最佳答案
您可以使用 parse_url
,它将为您提供 scheme
。然后检查它是否在['mailto', 'http', 'https','tel']
关于PHP RegEx 允许 mailto : http://and tel: hyperlinks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29677337/