PHP正则表达式匹配所有URL

30 浏览
0 Comments

PHP正则表达式匹配所有URL

这个问题已经有答案了:

什么是检查字符串是否是有效URL的最佳正则表达式?

我需要帮助创建一个可以匹配所有URL的正则表达式,例如,请不要将问题关闭为重复,因为我已经寻找了很长时间需要的答案,我看到的所有答案都没有解决我的问题。

website.com

www.website.com

http://www.website.com

http://website.com

https://www.website.com

https://website.com

还可以有任何其他的内容

www.website.com/path-to-something

我正在编写一个可以缩短任何URL的程序,但首先我需要将它们全部匹配。

谢谢

admin 更改状态以发布 2023年5月20日
0
0 Comments

你想使用类似于这样的东西:

$string = 'www.blah.com';
$temp_string = (!preg_match('#^(ht|f)tps?://#', $string)) // check if protocol not present
    ? 'http://' . $string // temporarily add one
    : $string; // use current
if (filter_var($temp_string, FILTER_VALIDATE_URL))
{
    echo 'is valid';
} else {
    echo 'not valid';
}

这个使用了PHP内置的URL验证。它首先检查协议是否存在,如果不存在,则会暂时将其添加到要检查的字符串中,然后通过验证运行。这比目前可接受的答案更准确。

0
0 Comments

这个完全符合您发布的所有内容:

preg_match_all('#[-a-zA-Z0-9@:%_\+.~\#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~\#?&//=]*)?#si', $targetString, $result);

0