【发布时间】:2011-04-30 18:13:02
【问题描述】:
我想将字符串拆分为多个字符(+、~、> 和 @,但我希望这些字符成为返回部分的一部分。
我试过了:
$parts = preg_split('/\+|>|~|@/', $input, PREG_SPLIT_DELIM_CAPTURE);
结果只有 2 个部分,应该有 5 个,而 split-char 不是第 [1] 部分的一部分。
我也试过了:
$parts = preg_split('/\+|>|~|@/', $input, PREG_SPLIT_OFFSET_CAPTURE);
结果是 1 部分太少(4 而不是 5),最后一部分包含拆分字符。
preg_split 中没有标志,结果几乎是完美的(尽可能多的部分),但所有拆分字符都消失了。
示例:
$input = 'oele>boele@4 + key:type:id + *~the end'; // spaces should be ignored
$output /* should be: */
array( 'oele', '>boele', ' @4 ', '+ key:type:id ', '+ *', '~the end' );
是否有 spl 函数或标志来执行此操作,还是我必须自己制作一个 =(
【问题讨论】:
-
几乎是重复的。我希望我的拆分字符成为“下一个部分的第一个”,而不是“当前的最后一个”。你知道怎么做吗?