<?php
$headers = <<<HEADERS
# Hello
## World
### Let's add
## Some headers
### Yay!
# Foo
## Bar
## Bar Again
HEADERS;
$levels = [];
echo preg_replace_callback(
'~^(#+)\K~m',
function($m) use (&$levels) {
$hashes = strlen($m[1]);
$index = $hashes - 1;
$reduction = sizeof($levels) - $hashes;
if (!isset($levels[$index])) {
$levels[$index] = 1;
} else {
++$levels[$index];
}
if ($reduction > 0) {
$levels = array_slice($levels, 0, -$reduction);
}
return " " . implode('.', $levels);
},
$headers
);
- Output for 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
- # 1 Hello
## 1.1 World
### 1.1.1 Let's add
## 1.2 Some headers
### 1.2.1 Yay!
# 2 Foo
## 2.1 Bar
## 2.2 Bar Again
preferences:
131.58 ms | 403 KiB | 152 Q