编程

Laravel 中使用 doesntContain 简化字符串检测

317 2024-11-16 03:32:00

需要检查字符串是否未包含某些单词吗?Laravel 的 Str helper 提供的新 doesntContain 方法使这项任务变得轻而易举!让我们来探索一下这个简单但有用的功能是如何工作的。

使用 doesntContain

doesntContain 方法是 contains 的反面,当字符串不包含特定内容时返回 true

use Illuminate\Support\Str;

$str = 'My favorite food is Pizza';

// Single value check
$result = Str::doesntContain($str, 'Steak');  // true
$result = Str::doesntContain($str, 'Pizza');  // false

多值检测

你也可以一次性检测多个值:

$result = Str::doesntContain($str, ['Steak', 'Spaghetti']);  // true
$result = Str::doesntContain($str, ['Steak', 'Spaghetti', 'Pizza']);  // false

真实示例

以下是内容过滤系统中可能的用例:

class ContentFilter
{
    protected array $bannedWords = ['spam', 'scam', 'free money'];

    public function isClean(string $content): bool
    {
        return Str::doesntContain(
            strtolower($content), 
            $this->bannedWords
        );
    }

    public function filterComment(Comment $comment)
    {
        if ($this->isClean($comment->content)) {
            $comment->approve();
        } else {
            $comment->markForReview();
        }
    }
}

doesntContain 方法提供了一种干净、直观的方法来检查内容中是否缺少字符串。无论是过滤内容、验证输入还是处理文本,此方法都会使代码更具可读性和可维护性。