PHP RegEx 允许 mailto : http://and tel: hyperlinks

标签 php regex laravel

我需要做的是允许文本字段验证并允许 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/

相关文章:

php - Laravel 5.4 - @extends 不工作

用于获取页面的文件大小和加载时间的 PHP 函数

php - 在常量中添加变量

php - 带有 php 的 html 文本形式没有插入到 MySQL 服务器中

php - 四模型关系选择与聚合

regex - bash,在冒号前提取字符串

Java - 处理文本文件以识别由空格或符号分隔的每个字符串

python - 我如何摆脱像 ' 这样出现而不是撇号的字符?

php - 如何在 Laravel 中返​​回单个对象而不是集合

php - 如何使用 Laravel5 从查询中删除 "\"