- array_push: documentation ( source)
- strcmp: documentation ( source)
- preg_match: documentation ( source)
- end: documentation ( source)
- explode: documentation ( source)
- htmlspecialchars: documentation ( source)
- array_pop: documentation ( source)
<?php
if(isset($_POST['submit'])) {
$text = htmlspecialchars($_POST['input']);
$lines = explode(PHP_EOL, $text);
$bullets = array();
foreach ($lines as $line)
{
if (strlen($line) > 0) {
preg_match("/([^\s]+)\s+(\w+)/", $line,$captured);
if (count($captured) > 1 ) {
if (strcmp($captured[1], end($bullets))) {
if (count($bullets) > 1 && !strcmp($bullets[count($bullets)-2],$captured[1])) {
echo '</ul>';
array_pop($bullets);
} else {
echo '<ul>';
array_push($bullets, $captured[1]);
}
}
echo "<li>$captured[2]</li>";
}
}
}
while (count($bullets)) {
echo "</ul>";
array_pop($bullets);
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" id="deformat">
Formatted data <textarea rows="4" cols="50" name="input" form="deformat" placeholder="pasted formatted text here">
</textarea>
Deformatted data <textarea rows="4" cols="50" name="output" form="deformat">
</textarea>
<input type="submit" name="submit" value="Clean my data!">
</form>