You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移新服务器后PHP使用match()函数出现语法错误,求解决方法

修复PHP语法错误:unexpected token ","

问题根源

你写的match('/[_-]([0-9]+)$/', $str, 1)是错误用法:PHP的match是条件分支表达式(PHP 8.0+引入),不是正则匹配函数,它的语法是match (表达式) { 分支 => 值, ... },你把它当成preg_match这类正则函数调用,导致语法解析失败,出现逗号相关的语法错误。

你的实际需求是从字符串末尾提取下划线/横杠后的数字ID,应该用正则匹配函数来实现。

修复方案

用preg_match替代错误的match调用,正确实现提取数字ID的逻辑:

// Given a string such as "comment_123" or "id_57", it returns the final, numeric id.
function split_id($str) {
    if (preg_match('/[_-]([0-9]+)$/', $str, $matches)) {
        return $matches[1];
    }
    // 可选:如果没有匹配到返回默认值,比如null或者原字符串
    return null;
}

说明

  1. preg_match会执行正则匹配,将捕获到的分组内容存入$matches数组
  2. 判断匹配是否成功,成功则返回第一个捕获分组(即末尾的数字ID)
  3. 增加了匹配失败的处理逻辑,避免无匹配时返回错误

额外注意

如果你的新服务器PHP版本低于8.0,即使match表达式用对了也会报错,但你的问题核心是误用了match的语法,所以优先用preg_match实现更兼容所有PHP版本。

内容的提问来源于stack exchange,提问作者Erisson J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:40:28