如何在正则表达式中添加http(s)?

时间:2018-07-04 19:23:16

标签: php url

总体而言,我在编码方面完全陌生,并且我正在建立自己的第一个网站,在帐户创建表单中的某个时候要求用户提供社交媒体个人资料的网址。默认情况下,.tpl文件说明了这一点;

public function isValidUrl($url) {
    return preg_match('|^[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url);
    //return (filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED));
}

public function addScheme($url) {
    $scheme = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
    || $_SERVER['SERVER_PORT'] == 443) ? 'https://' : 'http://';

    return parse_url($url, PHP_URL_SCHEME) === null ? $scheme . $url : $url;
}

我的问题是,它要求用户在“ http //:www”之后复制部分网址。而不是简单地从浏览器的地址栏中复制/粘贴整个网址。

有人可以告诉我如何修改以上代码,以使用户更轻松吗?

先谢谢了。

1 个答案:

答案 0 :(得分:0)

一旦您对被称为正则表达式的魔术有了基本的了解,这并不难。我真的鼓励您阅读有关它的内容。

遵循这些思路可能会起作用:

return preg_match('|^(http(s)?:\/\/)?[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url);

regex101.com是使用正则表达式时非常有用的网站。查看此link,以解释您的正则表达式-包括我添加的部分-