|
|
@@ -5131,15 +5131,13 @@ function splitContent($content) {
|
|
|
// 5. "第"字与数字、数字与章节关键字之间可能有空格
|
|
|
// 6. 前后可能有#、*、·等修饰符号,后面可能有冒号、空格、标题文字等
|
|
|
|
|
|
- // 先预处理:将标题前后添加换行符,确保标题能被正确识别和拆分
|
|
|
- // 匹配模式:可能有前缀符号 + "第" + 空格(可选) + 数字 + 空格(可选) + 章节关键字 + 可能的标题内容
|
|
|
- $pattern = '/([#*·\-_=\s]*)第\s*([一二两三四五六七八九十百千万0-9]+)\s*([章节集幕场话])([^第\n]*?)(?=第\s*[一二两三四五六七八九十百千万0-9]+\s*[章节集幕场话]|$)/u';
|
|
|
-
|
|
|
- // 先在每个标题前插入换行符(如果前面不是换行的话)
|
|
|
- $content = preg_replace('/([^\n])([#*·\-_=\s]*)第\s*([一二两三四五六七八九十百千万0-9]+)\s*([章节集幕场话])/u', "$1\n\n$2第$3$4", $content);
|
|
|
-
|
|
|
- // 现在用修改后的模式匹配(标题应该在行首或接近行首)
|
|
|
- $pattern = '/^[#*·\s\-_=]*第\s*([一二两三四五六七八九十百千万0-9]+)\s*([章节集幕场话]).*$/mu';
|
|
|
+ // 先预处理:仅在"第X集/章"位于某段正文末尾(可能因未换行粘连)时补换行使其独立成行;
|
|
|
+ // 支持正文末尾直接跟"第X集"或"第X集:标题"的粘连格式;
|
|
|
+ // 正文中间出现的"第X集"字样(如"真假千金文里第一集就被赶出厂")保持不动,避免误判为章节标题
|
|
|
+ $content = preg_replace('/([^ \t\r\f\v\n#*·\-_=])(第\s*[一二两三四五六七八九十百千万0-9]+\s*[章节集幕场话])((?:[::][^\n]*|[ \t\r\f\v]*))$/mu', "$1\n\n$2$3", $content);
|
|
|
+
|
|
|
+ // 匹配章节标题:标题必须位于行首(前面仅允许空格/Tab 或 #*·-_= 等修饰符),避免跨行误匹配
|
|
|
+ $pattern = '/^[#*·\-_= \t]*第\s*([一二两三四五六七八九十百千万0-9]+)\s*([章节集幕场话]).*$/mu';
|
|
|
|
|
|
// 用正则找出所有章节标题的位置
|
|
|
if (preg_match_all($pattern, $content, $matches, PREG_OFFSET_CAPTURE)) {
|