Допустим, у нас есть вход синтаксического анализатора команд, посредством которого данный символ (в данном случае точка) выполняет две функции: разбивать строки на другие команды, а также давать парсеру команду повторить последнюю команду.
Например:
go north.pick up item.go west...go north..
Чего можно достичь: «иди на север, возьми предмет, иди три раза на запад, иди дважды на север».Однако при использовании preg_split
я просто не могу получить желаемый вывод.
Все, что у меня есть до сих пор, это:
$temp = 'go north.pick up item.go west...go north..';
preg_split('/\.)/', $temp);
, что дает:
Массив
(
[0] => перейти на север
[1] => подобрать предмет
[2] => перейти на запад
[3] =>
[4]=>
[5] => идти на север
[6] =>
[7] =>
)
Это явно неверно в двух случаях - нетвозвращаются точки и дополнительная команда в конце.Точки должны быть возвращены, чтобы наш синтаксический анализатор мог решить, что пользователь хочет повторить свою последнюю команду.
Использование PREG_SPLIT_DELIM_CAPTURE
не дает никаких результатов, несмотря на использование (\.)
в качестве регулярного выражения.