Hier ein Beispiel für einen sehr einfachen Parser.
Hier folgt demnächst ein erläuternder Text dazu.
<?php
$s = 'Esel Hund "gestiefelter Kater" Hahn Fuchs "die sieben Geißlein" Wolf';
$n = strlen($s);
$count = 0;
$stack = array();
$mode = 1;
$last_char = '';
for ($i=0; $i < $n; $i++):
$char = $s[$i];
if ($char == '"'){
$mode = 1 - $mode;
continue;
}
if ($char == ' ' && $mode == 1){
$count++;
continue;
}
if (!isset($stack[$count])){
$stack[$count] = '';
}
$stack[$count] .= $char;
endfor;
print '<ul><li>'.join('</li><li>', $stack).'</li></ul>';
?>