假设我们有一个命令解析器输入,其中给定字符(在这种情况下是一个点)服务于两个功能:将字符串拆分为其他命令,并指示解析器重复最后的命令。用重复模式分割字符串,保留分隔符
例如:
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] =>拾item
[2] =>去西
[3] =>
[4] =>
[5] =>北上
[6] =>
[7] =>
)
这显然是在两种情况下不正确 - 没有点返回和一个额外的在结束命令。点必须返回,所以我们的解析器可以计算出用户想要重复他们的最后一个命令。
尽管使用(\.)
作为正则表达式,但使用PREG_SPLIT_DELIM_CAPTURE
的效果并不理想。