使用badwords-filter npm遇PHP8兼容问题:create_function()报错求助
修复PHP 8中create_function()被移除导致的badwords-filter报错
create_function()在PHP 8.0版本已被正式移除,你需要将这段代码中的动态函数替换为PHP原生支持的匿名闭包,以下是修复后的代码:
private function flattenArray($array) { $objTmp = (object)['aFlat' => []]; array_walk_recursive($array, function(&$v, $k, &$t) { $t->aFlat[] = $v; }, $objTmp); return $objTmp->aFlat; }
修复说明:
- 匿名闭包是PHP 5.3+就支持的特性,完全兼容PHP 8及后续版本,能完美替代
create_function()的功能 - 闭包的参数和逻辑和原代码完全一致,只是语法更规范、执行性能更优
- 如果这个badwords-filter包长期未维护,建议考虑fork仓库自行修改维护,或者更换其他维护活跃的敏感词过滤类库
内容的提问来源于stack exchange,提问作者Maksim
相关产品推荐
相关产品推荐

