首页 > 解决方案 > 如何将 http(s) 添加到正则表达式?

问题描述

一般来说,我在编码方面完全是新手,我正在构建我的第一个网站,在帐户创建表单中的某个时刻会要求用户的社交媒体个人资料网址。默认情况下,.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”之后复制部分 url。而不是简单地从浏览器的地址栏中复制/粘贴整个 url。

谁能告诉我如何修改上面的代码以使用户更容易?

提前致谢。

标签: phpurl

解决方案


这并不难,只要您对称为正则表达式的魔法有了基本的了解。我真的鼓励你读一点。

这些方面的东西可能会起作用:

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

regex101.com 在使用正则表达式时是一个非常有用的网站。查看此链接以解释您的正则表达式(包括我添加的部分)。


推荐阅读