PHP 8.1 中 preg_replace_callback() 的替代方案?

问题描述 投票:0回答:1

我有以下代码:

$comment_content = preg_replace_callback('/\[([^][]*)]\(([^()]*)\)|(\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|])/i',
    create_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);

这在 PHP 7.2 上运行良好,但由于我将服务器更改为 Ubuntu 22.04 并且它使用 PHP 8.1,现在代码已损坏。

知道如何修复它吗?

php compatibility
1个回答
0
投票
$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
);
© www.soinside.com 2019 - 2024. All rights reserved.