PHP中将带序号的字符串转换为数组的问题求助
解决方案:提取编号项为数组
针对你的需求,有两种常用的PHP正则处理方式:
方法一:使用preg_match_all捕获目标内容
通过正则匹配每个编号后的文本内容,直接提取所需部分:
$str = "1. List of word synonyms 2) Glass plastic products 3. Other product"; // 匹配数字+(.或)),捕获后续直到下一个编号或结尾的内容 preg_match_all('/\d+[.)]\s*(.*?)(?=\s*\d+[.)]|$)/s', $str, $matches); $result = $matches[1]; print_r($result);
正则说明:
\d+:匹配一个或多个数字[.)]:匹配.或)两种编号后缀\s*:匹配编号后的零个或多个空格(.*?):非贪婪捕获目标文本,避免过度匹配(?=\s*\d+[.)]|$):正向预查,确保捕获到下一个编号或字符串结尾为止s修饰符:让.匹配换行符(兼容含换行的场景)
方法二:使用preg_split分割字符串
以编号作为分隔符分割原字符串,过滤空元素后得到结果:
$str = "1. List of word synonyms 2) Glass plastic products 3. Other product"; // 以数字+(.或))(前后可带空格)作为分隔符分割 $parts = preg_split('/\s*\d+[.)]\s*/', $str, -1, PREG_SPLIT_NO_EMPTY); print_r($parts);
参数说明:
-1:保留所有分割后的元素PREG_SPLIT_NO_EMPTY:过滤分割产生的空字符串(比如原字符串开头的编号前无内容,会生成空元素)
两种方法运行后都会输出你需要的数组:
Array( [0] => List of word synonyms [1] => Glass plastic products [2] => Other product )
内容的提问来源于stack exchange,提问作者Krystian
相关产品推荐
相关产品推荐

