|
|
@@ -467,6 +467,29 @@
|
|
|
// 重新组合所有部分
|
|
|
$solutionProcessed = implode('', $processedSections);
|
|
|
|
|
|
+ // 【新增】如果没有匹配到任何section标记,整个solution都没有方框,则默认加一个方框
|
|
|
+ if (empty($processedSections) || (count($processedSections) === 1 && !str_contains($processedSections[0] ?? '', 'step-box'))) {
|
|
|
+ // 检查是否有步骤关键词
|
|
|
+ if (preg_match('/(步骤\s*\d+|第\s*\d+\s*步)/u', $solutionProcessed)) {
|
|
|
+ // 有步骤关键词:为每个步骤添加方框
|
|
|
+ $allSteps = preg_split('/(?=步骤\s*\d+|第\s*\d+\s*步)/u', $solutionProcessed, -1, PREG_SPLIT_NO_EMPTY);
|
|
|
+ if (count($allSteps) > 0) {
|
|
|
+ $processed = '';
|
|
|
+ for ($i = 0; $i < count($allSteps); $i++) {
|
|
|
+ $stepText = trim($allSteps[$i]);
|
|
|
+ if (!empty($stepText)) {
|
|
|
+ $prefix = ($i > 0) ? '<br>' : '';
|
|
|
+ $processed .= $prefix . '<span class="solution-step"><span class="step-box">' . $renderBoxes(1) . '</span><span class="step-label">' . $stepText . '</span></span>';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $solutionProcessed = $processed;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 没有步骤关键词:默认在开头添加一个方框
|
|
|
+ $solutionProcessed = '<span class="solution-step"><span class="step-box">' . $renderBoxes(1) . '</span><span class="step-label">' . trim($solutionProcessed) . '</span></span>';
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 将多余的换行转换为<br>,但保留合理的段落间距
|
|
|
$solutionProcessed = preg_replace('/\n{3,}/u', "\n\n", $solutionProcessed);
|
|
|
$solutionProcessed = nl2br($solutionProcessed);
|