如何将 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."之后复制网址的一部分,而不是简单地从浏览器的地址栏中复制/粘贴整个网址。

任何人都可以告诉我如何修改上面的代码以使用户更容易吗?

提前谢谢。

这并不难,一旦你对称为正则表达式的魔法有了基本的了解。我真的鼓励你阅读一些关于它的信息。

沿着这些思路可能有效:

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

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

最新更新