- preg_match_all: documentation ( source)
- preg_replace: documentation ( source)
- str_starts_with: documentation ( source)
<?php
$data = <<<FOO
#Doc 1
## #Doc1.1
#Doc 1.2
mine_sht : carftj ### 漢字漢字貔貅 (Random chinese symbols)
tv: tee # # HI
tvw: 9 #Inline doc
#aa
9abaa: ahah
#heuens
FOO;
preg_match_all('~^\s*(?:(\w+)\s*:.[^\r\n#]*([^\r\n]*#*)?)?(#*(?:[^\r\n]|[\r\n]#)*)~um', $data, $matches);
///print_r($matches);
$doc = "";
foreach($matches[1] as $i => $m) {
$s = preg_replace('/\s+/', '', $m); //Remove whitespace
if (str_starts_with($s, "#") || empty($s)){ //Valid next comment line
$doc .= $matches[3][$i] . PHP_EOL; //Adding comments
//print("DOC LOG: " . $doc . PHP_EOL); //LOG DOC
continue;
}
print("KEY:\n" . $m . "\nDOC:\n" . $doc . "\nIDOC:\n" . $matches[2][$i] . "\n");
print("--------------------------------------------------\n");
$doc = $matches[3][$i];
//print("OPEN: ". $m . "-CLOSED\n");
}