PHP URL验证+检测

2022-03-29 00:00:00 regex php preg-match

所以这是我需要做的。

如果用户输入http://site.com我需要删除http://,则字符串将site.com;如果用户输入http://www.site.com我需要删除http://www.,或者如果用户输入www.site.com,我需要删除www.,或者他也可以输入site.com

我这里有一个函数,但不能按我想要的方式工作,而且我的正则表达式很差。

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

解决方案

我认为我不会为此使用正则表达式,因为您实际上只是检查字符串开头的内容。所以:

$link = $_POST['link'];
if (stripos($link, 'http://') === 0)
{
    $link = substr($link, 7);
}
elseif (stripos($link, 'https://') === 0)
{
    $link = substr($link, 8);
}
if (stripos($link, 'www.') === 0)
{
    $link = substr($link, 4);
}

应该会处理好的。

相关文章