感谢@微凡 @老周部落 和 Discuz应用中心 对此问题的讨论和分析。
!713:【轻量级 PR】:修复 表前缀格式限制最后一个字符为 _ , 避免形如 pre_1 的表前缀产生导致程序处理出错 中处理了一个关于表前缀的问题,但在深入讨论后发现事情不止于此。
问题的源头实质上是str_replace在替换过程中对部分内容产生了二次替换的问题。
如pre_1前缀,{tablepre}先被替换为pre_1,又将pre_替换为pre_1导致最终前缀变成了pre_11。

之前的PR采用结尾必须为_的修复办法并不能解决问题,重点是前缀里含有cdb_或pre_,且不为这两者(如pre_1_)就不行。
实际查看代码后发现,安装过程的替换不存在此问题,因为前缀固定。
插件安装过程的替换也不存在此问题,原因是插件安装采取了两步替换的办法:
第一步先把cdb_和pre_全部换成{tablepre}(此步骤与用户设定的前缀无关),第二步再做真正的替换(目标确定,不存在争议了)。

本PR将插件安装位置的表前缀替换逻辑移植到SQL执行位置,以修复此问题。
本PR同时还原 !713:【轻量级 PR】:修复 表前缀格式限制最后一个字符为 _ , 避免形如 pre_1 的表前缀产生导致程序处理出错 !718:【轻量级 PR】:修复 安装时报 "数据表前缀为空,或者格式错误,请检查" 的Bug 的修改,且不再限制前缀格式了(问题查明后已不需要此限制)