php8中使用正则匹配,不区分大小写的方法

2024-11-30 31 0

在 PHP 中,如果你希望检测 $text 中的机器人的名字时,能够识别出不同的格式(例如大小写不同和带不带 @ 符号),可以使用 preg_match 函数进行正则匹配。这样可以不区分大小写,并可以匹配带 @ 符号的情况。

下面是一个修改的代码示例,它可以匹配 $this->telegramBotName(例如 @HzjcpBot)和 @hzjcpbot 的情况:

// 使用正则匹配,不区分大小写
    if (!preg_match('/@?(' . preg_quote(strtolower($this->telegramBotName), '/') . ')/i', strtolower($text))) {
        $this->output->info(date('Y-m-d H:i:s') . ' 没有给机器人发信息,不需要处理');
        continue;
    }

代码解释

  1. preg_quote: 这个函数用于转义 $this->telegramBotName 中的特殊字符,确保它在正则表达式中可以被安全使用。preg_quote 后面添加一个参数 / 用于指定转义的字符集(即 / 字符)。
  2. strtolower: 将传入的文本和机器人的名字都转换成小写,以便不区分大小写进行比较。
  3. preg_match: 正则表达式 /@?({$this->telegramBotName})/i 的意思是匹配可能带有 @ 符号的机器人名字,其中 i 修饰符表示匹配时不区分大小写。

通过这样的方式,无论用户输入的是 @HzjcpBot 还是 @hzjcpbot,都可以被正确识别。

    相关文章

    php8中,empty($param[‘time_num’]) 如果这个 time_num 为0 他是真还是假?
    php中使用 Symfony DomCrawler 来获取 HTML 内容中的 token 值
    PHP请求库Guzzle配置代理
    越速云:简单好用的稳定高性价比的云服务器云手机服务商
    php中检查文本内容中是否包某个字符或者名字
    皓量云擎:上新游戏面板服务器首月5折低至20元/月,加入推广者计划,返佣高达30%

    发布评论