|
|
@@ -11,20 +11,25 @@
|
|
|
->sortBy(fn ($item) => (int) (($item['q']->question_number ?? 0)))
|
|
|
->values();
|
|
|
|
|
|
- $normalizeQuickAnswer = function (?string $answer): string {
|
|
|
+ $normalizeAnswerText = function (?string $answer, bool $compact = false): string {
|
|
|
$answer = trim((string) $answer);
|
|
|
if ($answer === '') {
|
|
|
return '—';
|
|
|
}
|
|
|
$answer = preg_replace('/\s+/u', ' ', $answer) ?? $answer;
|
|
|
- $answer = str_replace([';', ';'], ' / ', $answer);
|
|
|
+ // 与下方解析排版保持一致:保留分号语义,仅增加软换行机会,避免把答案错误改写成“/”
|
|
|
+ $answer = str_replace([';', ';'], [';<wbr>', ';<wbr>'], $answer);
|
|
|
+ if ($compact) {
|
|
|
+ // 速查统一为流式:移除显式换行
|
|
|
+ $answer = preg_replace('/<br\s*\/?>/iu', ' ', $answer) ?? $answer;
|
|
|
+ }
|
|
|
|
|
|
return trim($answer);
|
|
|
};
|
|
|
|
|
|
- $quickAnswers = $allQuestions->map(function ($item) use ($normalizeQuickAnswer) {
|
|
|
+ $quickAnswers = $allQuestions->map(function ($item) use ($normalizeAnswerText) {
|
|
|
$q = $item['q'];
|
|
|
- $answerText = $normalizeQuickAnswer($q->answer ?? '');
|
|
|
+ $answerText = $normalizeAnswerText($q->answer ?? '', true);
|
|
|
$isLong = mb_strlen(strip_tags($answerText)) > 20
|
|
|
|| str_contains($answerText, "\n")
|
|
|
|| str_contains($answerText, "\r")
|
|
|
@@ -32,8 +37,6 @@
|
|
|
|| str_contains($answerText, '\\frac')
|
|
|
|| str_contains($answerText, '见解析');
|
|
|
$processedAnswer = \App\Services\MathFormulaProcessor::processFormulas($answerText);
|
|
|
- // 速查统一为流式:移除显式换行
|
|
|
- $processedAnswer = preg_replace('/<br\s*\/?>/iu', ' ', $processedAnswer) ?? $processedAnswer;
|
|
|
|
|
|
return [
|
|
|
'no' => (int) ($q->question_number ?? 0),
|
|
|
@@ -195,9 +198,7 @@
|
|
|
$hasImageLikeSolution = (bool) preg_match('/<\s*img\b|<\s*image\b|(^|[\s>])img\s+src\s*=/iu', $rawSolution);
|
|
|
$showAnswer = !$isSeeSolutionAnswer;
|
|
|
|
|
|
- $renderAnswer = $rawAnswer !== ''
|
|
|
- ? \App\Services\MathFormulaProcessor::processFormulas($rawAnswer)
|
|
|
- : '—';
|
|
|
+ $renderAnswer = \App\Services\MathFormulaProcessor::processFormulas($normalizeAnswerText($rawAnswer, false));
|
|
|
if ($rawSolution === '') {
|
|
|
$renderSolution = '(无详解)';
|
|
|
} elseif ($hasImageLikeSolution) {
|