我正在尝试制作标记以格式化有序列表,这是标记样式:
$strings = "1. dog
1. cat
1. fish
1. horse
1. monkey
1. pig
";
horse
并且monkey
该列表应该是子列表的一部分,因为它们在数字前有一个空格。这是我正在使用的代码:
function blq($match){
$str = preg_replace("/^1\. (.+?)$/m", "<li>$1</li>", $match[0]);
$str = preg_replace_callback("/(?:^1\. .+(\n|$))+/m", 'blq', $str);
return "<ol>$str</ol>";
}
$string = preg_replace_callback("/(?:^ ?1\. .+(\n|$))+/m", 'blq', $strings);
echo $string;
该代码正在创建此输出:
<ol><li>dog
</li>
<li>cat
</li>
<li>fish
</li>
1. horse
1. monkey
<li>pig
</li>
</ol>
horse
并且monkey
没有被创建为子列表,而只是被忽略了。我觉得我已经接近答案了,但我不知道该怎么做才能得到那个答案......
注意我想允许无限数量的子列表