问题描述
我正在将我的 PHP 应用程序从 PHP 5 升级到 PHP 7,为此我需要将 preg_replace() 函数的所有引用替换为 preg_replace_callback() 函数。
我很难为 preg_replace_callback() 函数创建 $pattern 参数。
以下是代码详情-
我试图匹配的字符串 -
$bandHdrs = "{format(26,num,4)}";
现有的 PHP 5 代码:
$bandHFmtString = "#({)(format)([(]*)([0-9]*)([a-zA-Z0-9,']*)([)]*)(})#e";
$subBandHead = preg_replace_callback($bandHFmtString,'$this->formatSqlNumber($queryData[$r][' . "$4" . '],\'' . "$5" . '\',\'' . "$2" . '\')',$bandHdrs);
新的 PHP 7 代码:
$bandHFmtString = "#\{format\(\[0-9]*\,\[a-zA-Z0-9]*\,\[0-9]*\)\}#";
$subBandHead = preg_replace_callback($bandHFmtString,function ($matches) use ($value) {
$firstCommaPos = strpos($matches[0],",");
$closeParenPos = strpos($matches[0],")",$firstCommaPos + 1);
$formatStr = substr($matches[0],$firstCommaPos,$closeParenPos - $firstCommaPos);
return Report::formatSqlNumber($value,$formatStr,"format");,$bandHdrs[$key]);
有人可以帮我创建 $bandHFmtString 模式来匹配 $bandHdrs 字符串吗?
任何帮助将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)