📅  最后修改于: 2023-12-03 15:02:37.522000             🧑  作者: Mango
在 Laravel 中,我们经常会需要判断一个字符串是否为 URL。下面介绍一种判断字符串是否为 URL 的方法。
Laravel 提供了 Illuminate\Support\Str
类,其中包含一个名为 is
的方法,可以用来判断一个字符串是否为 URL。
use Illuminate\Support\Str;
if (Str::is('http://*', $url)) {
// 字符串 $url 以 http:// 开头,是 URL
}
if (Str::is('*://*.com', $url)) {
// 字符串 $url 包含域名 .com,是 URL
}
在上面的示例中,Str::is
方法接受两个参数,第一个参数是匹配模式,第二个参数是待匹配的字符串。
匹配模式支持通配符 *
,例如 http://*
表示以 http://
开头的字符串,*://*.com
表示包含 .com
域名的字符串。
注意:Str::is
方法只是对字符串进行的简单匹配,不能完全验证其是否为 URL。
PHP 中也提供了判断一个字符串是否为 URL 的函数 filter_var
。
if (filter_var($url, FILTER_VALIDATE_URL) !== false) {
// 字符串 $url 是 URL
}
filter_var
函数接受两个参数,第一个参数是待验证的字符串,第二个参数是过滤器类型。
在上面的示例中,过滤器类型为 FILTER_VALIDATE_URL
,表示验证是否为 URL。如果传入的字符串符合 URL 的格式,则返回该字符串,否则返回 false
。因此,我们使用 !== false
进行非严格比较。
本文介绍了两种判断字符串是否为 URL 的方法,Laravel 中使用 Illuminate\Support\Str
类提供的 is
方法,PHP 中使用 filter_var
函数。
需要注意的是,这两种方法只是对字符串进行了简单的匹配或验证,并不能完全验证其是否为 URL,因此在实际使用中需要谨慎。