You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP实现从文本提取带重音圣经卷名的经文到数组

PHP提取含重音圣经卷名的经文到数组

要实现从任意文本中提取符合格式的圣经经文并存入数组,核心是用UTF-8兼容的正则表达式匹配经文结构,同时完整保留带重音的卷名。

匹配规则梳理

需要覆盖的典型经文格式:

  • 带数字前缀的多单词卷名(如2 Chronicles、3 John)
  • 带重音符号的卷名(如Genèse)
  • 章节格式:单章节(如3)、章节-小节(如11:10)、逗号分隔的多段范围(如11:10-12, 15-17)

实现代码

<?php
// 待处理的目标文本
$text = '某段文本中包含Genèse 11:10-12, 15-17, 19-20,还有分散在各处的其他经文,比如2 Chronicles 12:10-12, 15-17, 19-20和3 John 3等内容。';

// 适配UTF-8的正则表达式,匹配完整经文格式
$pattern = '/([\d]*\s*[A-Za-zÀ-ÿ]+(?:\s+[A-Za-zÀ-ÿ]+)*)\s+(\d+(?::\d+(?:-\d+)?(?:,\s*\d+(?:-\d+)?)*)?)/u';

// 提取所有匹配项
preg_match_all($pattern, $text, $matches);

// 整理成目标数组
$verses = array_map('trim', $matches[0]);

// 输出结果
print_r($verses);
?>

代码细节说明

  1. 正则末尾的u修饰符:确保正则引擎以UTF-8模式解析,正确识别带重音的字符(如è)
  2. 卷名匹配段:[\d]*\s*[A-Za-zÀ-ÿ]+(?:\s+[A-Za-zÀ-ÿ]+)* 支持带数字前缀、多单词、带重音的卷名
  3. 章节匹配段:\d+(?::\d+(?:-\d+)?(?:,\s*\d+(?:-\d+)?)*)? 覆盖单章节、章节-小节、多段范围等所有常见格式
  4. array_map('trim', ...):清理匹配结果中可能存在的多余空格

运行结果

执行代码后会输出符合需求的数组:

Array
(
    [0] => Genèse 11:10-12, 15-17, 19-20
    [1] => 2 Chronicles 12:10-12, 15-17, 19-20
    [2] => 3 John 3
)

内容的提问来源于stack exchange,提问作者Man Of God

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 08:30:51