📜  laravel 检查字符串是否为 url - PHP (1)

📅  最后修改于: 2023-12-03 15:02:37.522000             🧑  作者: Mango

Laravel 检查字符串是否为 URL - PHP

在 Laravel 中,我们经常会需要判断一个字符串是否为 URL。下面介绍一种判断字符串是否为 URL 的方法。

使用 Laravel 内置函数

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 内置函数

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,因此在实际使用中需要谨慎。