$data->total(), 'page' => $data->currentPage(), 'pageSize' => $size, 'rows' => $data->items() ]; } } if(!function_exists('format_money')){ function format_money($str,$len = '2',$append = ""): string { if (empty($str)) { return "0.00"; } return number_format($str, $len, ".", $append); } } if (!function_exists("clearAllBlank")) { /** * 全局替换所有空白为空 * @param string $str * @return string */ function clearAllBlank(string $str): string { return preg_replace('/[\s\x{3000}]+/u', '', $str); } } if (!function_exists("splitTransAndNote")) { /** * 拆分译文和注释 * @param string $text 原始混合文本 * @return array ['trans' => 译文内容, 'note' => 注释内容] */ function splitTransAndNote(string $text): array { // 正则分割:匹配【译文】【注释】边界(兼容有无中括号两种写法) $pattern = '/(译文|注释)/'; $parts = preg_split($pattern, $text, -1, PREG_SPLIT_DELIM_CAPTURE); $trans = ''; $note = ''; // 遍历分割结果组装内容 $flag = ''; foreach ($parts as $item) { if ($item === '译文') { $flag = 'trans'; } elseif ($item === '注释') { $flag = 'note'; } else { $item = trim($item); if ($flag === 'trans' && $item !== '') { $trans = $item; } elseif ($flag === 'note' && $item !== '') { $note = $item; } } } // 清除多余空白、换行 $trans = preg_replace('/\s+/', '', $trans); $note = preg_replace('/\s+/', PHP_EOL, $note); // 注释每条换行展示,可读性更好 return [ 'trans' => $trans, 'note' => $note ]; } }