我想检查一个字符串是否具有编号列表的格式,以正确格式化这一行:
1. Something
Text
1.1. Anything
Text
应该
<h2>1. Something</h2>
Text
<h3>1.1. Anything</h3>
Text
等等......
我为preg_match尝试了类似的东西:
#([\d]*\.)*\s*\K(.+?)$#s
答案 0 :(得分:1)
您可以使用:
$str = "1. Something\nText\n1.1. Anything\nText";
$result = preg_replace_callback('/^\d+\.((?:\d+\.)*)\h+.+$/m',
function($m) {$t=($m[1]!="")?'h3':'h2'; return "<$t>$m[0]</$t>";}, $str);
<强>输出:强>
<h2>1. Something</h2>
Text
<h3>1.1. Anything</h3>
Text