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

PHP 8.1中preg_replace_callback回调失效的修复方案

PHP 8.1下原有链接转换代码的修复方案

你的代码在PHP8.1环境报错的核心原因是create_function()函数已被移除——该函数在PHP7.2起被标记为废弃,PHP8.0及以上版本彻底删除了这个函数。

修复方法是将create_function()替换为PHP官方推荐的匿名函数,以下是修改后的完整代码:

$comment_content = preg_replace_callback(
    '/\[([^][]*)]\(([^()]*)\)|(\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|])/i',
    function($m) {
        if(isset($m[3])) {
            return "<span><a href=\"{$m[3]}\" target=\"_blank\">آدرس بدون عنوان</a></span>";
        } else {
            return "<span><a href=\"{$m[2]}\" target=\"_blank\">{$m[1]}</a></span>";
        }
    },
    $comment_content
);

修改说明

  • 移除了create_function()调用,直接使用function($m) { ... }形式的匿名函数作为回调
  • 调整了字符串的引号处理:使用双引号包裹HTML内容,并用{$变量名}的语法直接嵌入变量,避免了原代码中繁琐的字符串拼接和转义,代码可读性更强
  • 保持了原有正则表达式的匹配逻辑和链接转换的业务逻辑不变

内容的提问来源于stack exchange,提问作者Martin AJ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:36:12